pjsip for android,编译pjsip for Android

66b52468c121889b900d4956032f1009.png

8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

PJSIP是一个包含了SIP、SDP、RTP、RTCP、STUN、ICE等协议实现的开源库。它把基于信令协议SIP的多媒体框架和NAT穿透功能整合成高层次、抽象的多媒体通信API,这套API能够很容易的一直到各种构架中,不管是桌面计算机,还是嵌入式设备等。

PJSIP支持音频、视频和即时消息,并具有广泛的文档。PJSIP非常便携。在移动设备上,它抽象出与系统相关的功能,并且在许多情况下能够利用设备的本地多媒体功能。

官网

细致的介绍以及原理

编译

想要在Android开发中使用这个开源库,就要进行编译生成依赖包和.so库目录:

lib: [PJPROJECT的lib库]

pjlib:[基础框架库]

pjlib-util:[辅助工具库]

pjmedia:[开源的媒体栈]

pjnath:[开源的NAT-T辅助库]

pjsip:[开源的SIP协议栈]

pjsip-apps[demo]

第一步 准备: 创建config_site.h

需要现在下载源码 官网下载地址

创建pjlib/include/pj/config_site.h, 并config.site.h它添加内容:1

2

3#define PJ_CONFIG_ANDROID 1

#include

第二部 构建:环境

需要为你的ndk配置当前的环境变量1$ export ANDROID_NDK_ROOT=[YOUR ANDROID_NDK ROOT DIR] //你的ndk根目录

然后依次执行1

2$ ./configure-android

$ make dep && make clean && make

这里需要说明下,本人在执行完./configure-android的时候遇到问题如下:

aconfigure: error: C preprocessor "/lib/cpp" fails sanity check

See `config.log' for more details

stackoverflow这哥们遇到的和我一样,but他解决了却不告诉我, 连喊三个what?

拿着他的编译成果纵然不甘心,一番搜索终于还是解决了,(官网教程也有写,只不过放在最底下,让我这按部就班背锅了) 原来pjsip无法建立在android-ndk-r15上,只要指定 NDK_TOOLCHAIN_VERSION版本就好了,执行以下指令:1$ NDK_TOOLCHAIN_VERSION=4.9 TARGET_ABI=armeabi ./configure-android --use-ndk-cflags

第三步: 生成libpjsua2.so

需要使用SWIG编译java接口文件swig下载

在这个过程中下载pcre-build.sh需要用的压缩包

我下载的是pcre-8.40.tar.bz2

把pcre-8.40.tar.bz2拷贝到swig的根目录下

重命名pcre-8.40.tar.bz2为pcre-8.40.tar

进入到swig根目录下,执行./Tools/pcre-build.sh

依次执行 ./autogen.sh

./configure

make

sudo make install

然后切到pjsip-apps/src/swig目录执行1$ make

等待执行完毕…

最终会在pjsip-apps/src/swig/java/android/app/src/main/jniLibs目录下生成libpjsua2.so

同时在pjsip-apps/src/swig/java/android/app/src/main生成

很多java文件。这些文件也是给apk开发使用的1

2$ cd pjsip-apps/src/pjsua/android/jni

$ make //最终会生成libpjsua.so(例子)

(如果需视频则要把libopenh264.so也导入)

我的编译成果:github

你可能感兴趣的:(pjsip,for,android)