第一步:下载源码
源码地址:http://sipdroid.org/
SVN 检出地址:svn checkout http://sipdroid.googlecode.com/svn/trunk/
检出完成===>修改Jni代码===> 开始编译:
第二部:修改Jni代码(如果你需要支持更多的语音编码:speex、gsm、BV16、G722 HD Voice)
编译方法:
引用:http://www.cnblogs.com/tomboy/archive/2012/10/22/2733794.html
错误1
Android NDK: There is no Android.mk under /home/helei/workspace/raydroid/jni/jni Android NDK: If this is intentional please define APP_BUILD_SCRIPT to point Android NDK: to a valid NDK build script. /home/helei/android_toolchain/android-ndk-r7b/build/core/add-application.mk:143: *** Android NDK: Aborting... . Stop.
修改jni目录下的Application.mk文件中:
APP_PROJECT_PATH := $(call my-dir)
这一行,将其修改为:
APP_PROJECT_PATH := $(call my-dir)/..
错误2
Android NDK: /home/helei/workspace/raydroid/jni/../jni/Android.mk:silkcommon: LOCAL_MODULE_FILENAME must not contain a file extension /home/helei/android_toolchain/android-ndk-r7b/build/core/build-static-library.mk:29: *** Android NDK: Aborting . Stop.
解决办法:打开jni目录下的Android.mk文件,在如下代码位置:
SILK := silk LOCAL_MODULE := silkcommon LOCAL_SRC_FILES := $(SILK)/src/SKP_Silk_A2NLSF.c \ $(SILK)/src/SKP_Silk_CNG.c \ $(SILK)/src/SKP_Silk_HP_variable_cutoff_FIX.c \
修改之后为:
include $(CLEAR_VARS) SILK := silk LOCAL_MODULE := silkcommon LOCAL_SRC_FILES := $(SILK)/src/SKP_Silk_A2NLSF.c \ $(SILK)/src/SKP_Silk_CNG.c \ $(SILK)/src/SKP_Silk_HP_variable_cutoff_FIX.c \
错误3
Compile++ thumb : speex_jni <= speex_jni.cpp H:/workspace/SipUA/jni/../jni/speex_jni.cpp:26:25: fatal error: speex/speex.h: No such file or directory compilation terminated. /cygdrive/h/android/android-ndk-r8/build/core/build-binary.mk:255: recipe for target `/cygdrive/h/workspace/SipUA/obj/local/armeabi/objs/speex_jni/speex_jni.o' failed make: *** [/cygdrive/h/workspace/SipUA/obj/local/armeabi/objs/speex_jni/speex_jni.o] Error 1
解决办法:把jni文件夹中的speex-1.2rc1/include/speex文件夹拷贝到jni目录下
第三部:编译源码
在linux环境下进行编译,我是在ubuntu下进行编译
下载NDK-linux ===> 配置NDK环境变量
系统需要支持gcc、 make命令,对C代码进行交叉编译,如果没有,自行安装
安装完成===》进入源码根目录/
执行ndk-build 即可编译成功:
编译过程:
编译成功:源码文件下回多出一个obj文件夹
下面就可以导入eclipse进行源码研究了