pjsip使用最新源码编译 for android

最近要研究一下pjsip,所以从网上查看各种资料,下载源码,我用的ndk版本是r8d,编译步骤如下:

1.首先到官网下载源码,注意的是它有两个系列1.x和2.x,好像是2.x里面添加了视频功能,最主要的是2.1以上支持android编译,所以我选择的是2.x,下载地址:svn checkout http://svn.pjsip.org/repos/pjproject/trunk pjsip2.x

2.下载源码后,修改pjsip的编译配置pjlib\include\pj\config_site.h,写入以下内容

#define PJ_CONFIG_ANDROID 1
#include <pj/config_site_sample.h>
3.到下载的根目录pjsip2.x下面修改configure-android,在开头添加

ANDROID_NDK_ROOT=/opt/android-ndk-r8d
4.我不清楚配置错误还是源码的bug,可能在苹果上编译可以通过因为在pjmedia/src/pjmedia-audiodev下面有coreaudio_dev.m文件,没有对应的.c文件,所以make的时候,会提示

-o output/pjmedia-audiodev-arm-unknown-linux-androideabi/coreaudio_dev.o \
		../src/pjmedia-audiodev/coreaudio_dev.m 
arm-linux-androideabi-gcc: error: ../src/pjmedia-audiodev/coreaudio_dev.m: Objective-C compiler not installed on this system
make[2]: *** [output/pjmedia-audiodev-arm-unknown-linux-androideabi/coreaudio_dev.o] Error 1

所以我把pjmedia/src/pjmedia-audiodev/coreaudio_dev.m修改为pjmedia/src/pjmedia-audiodev/coreaudio_dev.c,该一下后缀就可以了

5.到下载的根目录pjsip2.x里面,运行./configure-android

最后会出现

Configurations for current target have been written to 'build.mak', and 'os-auto.mak' in various build directories, and pjlib/include/pj/compat/os_auto.h.

Further customizations can be put in:
  - 'user.mak'
  - 'pjlib/include/pj/config_site.h'

The next step now is to run 'make dep' and 'make'.
6.根据上面的提示我们在终端运行make dep && make

最后到

rm output/samples-arm-unknown-linux-androideabi/stateless_proxy.o output/samples-arm-unknown-linux-androideabi/aviplay.o output/samples-arm-unknown-linux-androideabi/strerror.o output/samples-arm-unknown-linux-androideabi/sipecho.o output/samples-arm-unknown-linux-androideabi/resampleplay.o output/samples-arm-unknown-linux-androideabi/sipstateless.o output/samples-arm-unknown-linux-androideabi/simple_pjsua.o output/samples-arm-unknown-linux-androideabi/recfile.o output/samples-arm-unknown-linux-androideabi/icedemo.o output/samples-arm-unknown-linux-androideabi/clidemo.o output/samples-arm-unknown-linux-androideabi/httpdemo.o output/samples-arm-unknown-linux-androideabi/siprtp.o output/samples-arm-unknown-linux-androideabi/stateful_proxy.o output/samples-arm-unknown-linux-androideabi/tonegen.o output/samples-arm-unknown-linux-androideabi/level.o output/samples-arm-unknown-linux-androideabi/pcaputil.o output/samples-arm-unknown-linux-androideabi/pjsip-perf.o output/samples-arm-unknown-linux-androideabi/vid_streamutil.o output/samples-arm-unknown-linux-androideabi/streamutil.o output/samples-arm-unknown-linux-androideabi/auddemo.o output/samples-arm-unknown-linux-androideabi/playsine.o output/samples-arm-unknown-linux-androideabi/aectest.o output/samples-arm-unknown-linux-androideabi/jbsim.o output/samples-arm-unknown-linux-androideabi/stereotest.o output/samples-arm-unknown-linux-androideabi/playfile.o output/samples-arm-unknown-linux-androideabi/latency.o output/samples-arm-unknown-linux-androideabi/simpleua.o output/samples-arm-unknown-linux-androideabi/confsample.o output/samples-arm-unknown-linux-androideabi/mix.o output/samples-arm-unknown-linux-androideabi/encdec.o
make[2]: Leaving directory `/pjsip2.x/pjsip-apps/build'
make[1]: Leaving directory `/pjsip2.x/pjsip-apps/build'
编译成功。

7.然后到pjsip-apps/src/pjsua/android目录下面我们要编译android项目所需要的库,运行ndk-build,结果如下:

root@zhangjie:/pjsip2.x/pjsip-apps/src/pjsua/android# ndk-build
Invoking SWIG...
swig -c++ -o jni/pjsua_wrap.cpp -package org.pjsip.pjsua -outdir src/org/pjsip/pjsua -java jni/pjsua.i
Compile++ thumb  : pjsua <= pjsua_wrap.cpp
Compile++ thumb  : pjsua <= pjsua_app_callback.cpp
StaticLibrary  : libstdc++.a
SharedLibrary  : libpjsua.so
Install        : libpjsua.so => libs/armeabi/libpjsua.so

注意:

如果是编译pjsip的动态库,供java层调用,编译完静态库之后,还需要安装swig编译动态库和接口
需要swig 2.0.5以上的版本。ubuntu 12.04自带的swig是2.0.4,不符合要求,需要自行编译安装swig的新版本


编译PJSIP Android版本,你需要按照以下步骤进行操作: 1. 首先,你需要设置你的编译环境。根据引用和引用,你需要安装Ubuntu 14.04和Android NDK(如android-ndk-r9d-linux-x86_64或android-ndk-r13b)。确保你已经安装了SWIG 2.0.5以上的版本。 2. 接下来,你需要下载PJSIP源代码。根据引用,你可以从官方网站上下载最新版本的源代码。解压缩源代码文件。 3. 修改配置文件。根据引用和引用,你需要在配置文件(config_site.h)中添加一些内容,例如#define PJ_CONFIG_ANDROID 1,如果你需要视频功能,还需要添加#define PJMEDIA_HAS_VIDEO 1。 4. 设置NDK环境变量。根据引用和引用,你需要设置ANDROID_NDK_ROOT环境变量,指向Android NDK的安装路径。 5. 配置PJSIP。根据引用,你可以运行./configure-android命令进行配置。如果你需要视频功能,可以使用./configure-android --with-openh264=/path/to/openh264进行配置,其中/path/to/openh264是你编译openh264成功后生成的androidlib目录的路径。 6. 编译PJSIP。根据引用和引用,运行make dep && make clean && make命令进行编译。静态库和动态库将会在编译完成后生成。 7. 编译Java接口文件。根据引用,进入pjsip-apps/src/swig目录,运行make命令编译Java接口文件。 8. 最后,你可以使用生成的libpjsua2.so和相关的Java文件进行apk开发。根据引用,libpjsua2.so将会被生成在pjsip-apps/src/swig/java/android/app/src/main/jniLibs目录下,Java文件将会生成在pjsip-apps/src/swig/java/android/app/src/main目录下。 请注意,编译过程可能会因为不同环境和版本的差异而有所不同,如果遇到问题,可以参考官方文档或社区的帮助资源。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [pjsip for Android编译](https://blog.csdn.net/u012247418/article/details/80161658)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Android 编译PjSip](https://blog.csdn.net/ou_yb2006/article/details/89354643)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [PJSIP-Android-Compilation:PJSIP-Android平台编译后的Hello World](https://download.csdn.net/download/weixin_42138139/19728536)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值