编译

说明

公司招了个android,让我进行协助。我主要是把pjsip库的android版给编译出来。

编译

当前时间是2020年3月30日。
此时pjsip的2.10版本已经发布一段时间了,但是2.10版本有点问题,里面的demo都运行不起来(windows + Qt)。因此这里我编译用的还是2.9版本。
主要参考的这里,里面的问题还是很多的。
建议使用mac编译;用windows也行(使用msys2),就是配置起来可能有点麻烦。
注意点:
1,ANDROID_NDK_ROOT值的设定
我用了

ANDROID_NDK_ROOT=/Users/robin/android-ndk-r14b

最新版的是 android-ndk-r21,采用r21编译的时候回报错,size_t未定义啥的。r20b、r19c都有问题。
r13b也是可行的。

据说运行configure-android时指定了编译的工具链的版本4.9及以下就可以了。我没试~

2,生成库的架构问题。
建议都生成一遍:armeabi 、arm64-v8a、armeabi-v7a、x86,
跟文中说的一样,使用如下的字符串。

TARGET_ABI=armeabi-v7a ./configure-android --use-ndk-cflags
make clean
make dep
make

3,编译 libpjsua2.so
安装SWIG。
我们用的也就是这个libpjsua2.so文件。
按照那个文档编译就是了。

Demo运行

pjsip中的demo太老了。
我用的是Android Studio 3.6.1,发现这个东西对网络依赖太多了,要下载很多东西,网不好的话就直接跪了。

按照文档中的Building and running pjsua2 sample application 用AS加载 pjsip-apps/src/swig/java/android 项目。
1,添加权限
在AndroidManifest.xml文件中,添加

<uses-permission android:name="android.permission.USE_SIP" />
<uses-feature android:name="android.hardware.sip.voip" />

在这里插入图片描述
2,修改目标SDK
在这里插入图片描述
这一步不是必须的,看运气。
之前这里我设置的都是26,结果在nokia7 和 魅族x8 没问题。redminote7上就不行,报 “AudioFlinger could not create record track” 的错误。也就是麦克风打开失败
网上说没有加录音权限,结果发现我已经加了,不关这个原因。
据说有两种解决办法:
a,sdk版本写的低一点,例如:22。
如果没有用到高级特性的话,还是用21或者22吧,这代表的是android 5,如果再低的话,到了android4.4 很多特性就不支持了。
android 6就加了很多权限了。
参考
b,添加
就是添加数字签名。我偶然看到的,没试~
参考

3, 解决AndroidStudio编译出现"Could not resolve all files for configuration ’
在 项目Gradle的allprojects中添加google()如图:
参考

运行

填写的数据如下图所示
在这里插入图片描述
在这里插入图片描述
然后就能进行尝试呼叫了。

freeswitch修改

可能会有点问题。我有点忘记了,我将音频编码的PCMA、PCMU放到了最前面。
还有可能会报:

NO candidate ACL defined, Defaulting to wan.auto

的错误,
按照这里来改。
在这里插入图片描述
我只添加了第一行。就解决这个问题了。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐