PJSIP2.7 Android版本编译及构建pjsua2和pjsua
2017-10-09 17:56
323 查看
本人使用的环境:Ubuntu14.0.4 (DigitalOcean 虚拟主机,笔者使用移动宽带选择Singapore节点80ms 左右延迟,推荐链接https://m.do.co/c/1399118d3ab5)
笔者按照PJSIP Android版本的官方编译说明(https://trac.pjsip.org/repos/wiki/Getting-Started/Android)操作,遇到了部分问题。特别是如Android SDK 依赖问题,按照说明(https://developer.android.com/ndk/downloads/index.html)获取的sdk仅为Android Studio IDE版本或者单独的 sdkmanager 版本(sdkmanager需要通过命令行手动下载其他sdk工具和软件包),为环境配置增加过多复杂度和不便,现参照WebRTC项目使用相同的Android SDK 和NDK依赖。
SDK : https://chromium.googlesource.com/android_tools.git
NDK: https://chromium.googlesource.com/android_ndk.git
或者使用apt下载安装
1、在PJSIP官网下载 http://www.pjsip.org/download.htm
2、下载完成后,创建pjlib/include/pj/config_site.h文件,添加如下配置:
#include <pj/config_site_sample.h>
export ANDROID_NDK_ROOT=/root/webrtc-build-scripts/android/webrtc/src/third_party/android_tools/ndk
TARGET_ABI=armeabi-v7a APP_PLATFORM=android-20 ./configure-android
make dep && make clean && make
注:
1. ./configure-android 默认构建armeabi 库,如需构建其他ABI如arm64-v8a, armeabi-v7a, x86,可使用类似命令:TARGET_ABI=armeabi-v7a ./configure-android –use-ndk-cflags
2. 设置APP_PLATFORM=android-20以规避该问题:dlopen failed: cannot locate symbol “rand” referenced by “libpjsua2.so”,请参见https://stackoverflow.com/questions/27338318/cannot-load-library-reloc-library1285-cannot-locate-rand
1、PATH添加SWIG环境变量
2、 cd /root/pjproject-2.7/pjsip-apps/src/swig && make clean && make
3、确保 /root/pjproject-2.7/pjsip-apps/src/swig/java/android/app/src/main/jniLibs/armeabi目录下生成libpjsua2.so
4、/root/pjproject-2.7/pjsip-apps/src/swig/java/android为pjsua2工程目录,将其拷贝至合适位置,使用Android Studio打开编译调试。
1、PATH添加SWIG环境变量
2、 cd /root/pjproject-2.7
cd /root/pjproject-2.7/pjsip-apps/src/pjsua/android/jni
make
3、确保/root/pjproject-2.7/pjsip-apps/src/swig/java/android/app/src/main/jniLibs/armeabi目录下生成libpjsua2.so
4、/root/pjproject-2.7/pjsip-apps/src/pjsua/android为pjsua工程目录,将其拷贝至合适位置,使用Android Studio打开编译调试。
笔者按照PJSIP Android版本的官方编译说明(https://trac.pjsip.org/repos/wiki/Getting-Started/Android)操作,遇到了部分问题。特别是如Android SDK 依赖问题,按照说明(https://developer.android.com/ndk/downloads/index.html)获取的sdk仅为Android Studio IDE版本或者单独的 sdkmanager 版本(sdkmanager需要通过命令行手动下载其他sdk工具和软件包),为环境配置增加过多复杂度和不便,现参照WebRTC项目使用相同的Android SDK 和NDK依赖。
第一步:Android SDK、 NDK配置(需要fq)
注:为chromium项目的默认Android环境依赖SDK : https://chromium.googlesource.com/android_tools.git
NDK: https://chromium.googlesource.com/android_ndk.git
第二步:SWIG依赖配置
在SWIG官网下载 http://www.swig.org/download.html或者使用apt下载安装
第三步:PJSIP2.7源码下载、配置
参见 https://trac.pjsip.org/repos/wiki/Getting-Started/Build-Preparation1、在PJSIP官网下载 http://www.pjsip.org/download.htm
2、下载完成后,创建pjlib/include/pj/config_site.h文件,添加如下配置:
#include <pj/config_site_sample.h>
第四步:PJSIP2.7源码编译
cd /root/pjproject-2.7export ANDROID_NDK_ROOT=/root/webrtc-build-scripts/android/webrtc/src/third_party/android_tools/ndk
TARGET_ABI=armeabi-v7a APP_PLATFORM=android-20 ./configure-android
make dep && make clean && make
注:
1. ./configure-android 默认构建armeabi 库,如需构建其他ABI如arm64-v8a, armeabi-v7a, x86,可使用类似命令:TARGET_ABI=armeabi-v7a ./configure-android –use-ndk-cflags
2. 设置APP_PLATFORM=android-20以规避该问题:dlopen failed: cannot locate symbol “rand” referenced by “libpjsua2.so”,请参见https://stackoverflow.com/questions/27338318/cannot-load-library-reloc-library1285-cannot-locate-rand
第五步:PJSUA2构建
也可参见笔者编译的Github工程 https://github.com/wildcreek/pjsua21、PATH添加SWIG环境变量
2、 cd /root/pjproject-2.7/pjsip-apps/src/swig && make clean && make
3、确保 /root/pjproject-2.7/pjsip-apps/src/swig/java/android/app/src/main/jniLibs/armeabi目录下生成libpjsua2.so
4、/root/pjproject-2.7/pjsip-apps/src/swig/java/android为pjsua2工程目录,将其拷贝至合适位置,使用Android Studio打开编译调试。
第六步:PJSUA构建
也可参见笔者编译的Github工程 https://github.com/wildcreek/pjsua1、PATH添加SWIG环境变量
2、 cd /root/pjproject-2.7
cd /root/pjproject-2.7/pjsip-apps/src/pjsua/android/jni
make
3、确保/root/pjproject-2.7/pjsip-apps/src/swig/java/android/app/src/main/jniLibs/armeabi目录下生成libpjsua2.so
4、/root/pjproject-2.7/pjsip-apps/src/pjsua/android为pjsua工程目录,将其拷贝至合适位置,使用Android Studio打开编译调试。
相关文章推荐
- Ubuntu11下编译pjsip_android[注:此方法只适合版本低于1108的pjsip]
- 编译android版本pjsip
- MAC下Android Studio 1.4编译构建Cocos2d-x 3.9之Android版本程序
- 编译android版本pjsip
- Android - 项目版本构建
- Unity3d+Jenkins 自动编译iOS、Android版本
- Android tcsetattr() failed native method return null 把NDK版本换成14的编译就好了
- Cocos2d Android项目手动编译日记之SDK版本(二)
- android 如何编译单双卡版本
- ios与android语音通用方案 编译libopencore-amr xcode4.5/ios6版本
- gentoo下编译arm64版本Qt5.5 for android
- 编译默认root的android的user版本
- 编译 Android版本的Openal方式
- Android 5.0.1(Lollipop)源码的下载、编译(eng版本)并烧录
- Android Gradle Plugin指南(五)——Build Variants(构建变种版本)
- cocos引擎v2.1版本android 编译问题解决办法 (cocos2d-x-3.4rc1)
- 快速下载和编译Dragonboard410c官网最新Android版本
- android(全志A10 4.0.4)版本系统编译说明.pdf
- Android mk文件 构建编译第三方jar和so