linphone android sdk 源码下载编译

13 篇文章 0 订阅

前言

在这里插入图片描述

    前面的有写过Android 使用Linphone SDK开发SIP客户端相关的文章, 在后续的开发过程中, 为了更深入了解linphone, 便尝试下载SDK源码自行编译.

    关于linphone这里不作过多介绍, 可以参考前面的文章.

    Linphone-SDK 是一个将 Liblinphone 及其依赖项捆绑为 git 子模块的项目,目的是简化整个 Liblinphone 套件的编译和打包,包括 Mediastreamer2、Belle-sip、oRTP 等。
    它的编译生成一个 SDK,适合创建在这些组件之上运行的应用程序。非 Linphone 团队开发或维护的子模块分组在 external/ 目录中。

    当前支持的平台有 Android、iOS、Desktop(Linux、Windows、Mac OS X)和 UWP(Universal Windows Platform)。

clone 代码

GitLab linphone-sdk

git clone https://gitlab.linphone.org/BC/public/linphone-sdk.git

注意: 为什么不使用GitHub上的仓库

# ********
# **注意**
# ********
#从GitHub上克隆下来的代码, 不能正常编译, 原因是有些模块找不到, 更新/下载不来.
https://github.com/BelledonneCommunications/linphone-sdk
git clone https://github.com/BelledonneCommunications/linphone-sdk.git

源码下载[2GB]

提取码: 4x4c 

环境及信赖

系统: Ubuntu 20.04
内存: 16GB
存储: 512GB

工具包:

  • Cmake >= 3.11
  • python >= 3.6
  • pip (or pip3 if the build machine has both python2 and python3)
  • yasm
  • nasm
  • doxygen
  • Pystache (use pip install pystache or pip3 install pystache)
  • six (use pip install six or pip3 install six)

编译

克隆下来解压出来后, 依赖的库代码基本为空, 通过下面的命令, 可以检索出所需要库代码.

检索依赖项
Linphone-SDK 的 git 存储库包含 git 子模块。 它必须使用 --recursive 选项进行克隆。 更新或切换分支后,永远不要忘记检查和更新子模块:

git submodule update --init --recursive

这个过程需要较长的时间, 具体看网络条件, 若出现失败建议检查下网络原因, 另外考虑下是否外网访问的问题.
完成后, 目录文件 列表:

linphone-sdk$ ll
total 248
drwxrwxr-x 35 android android  4096 1216 15:57 ./
drwxrwxr-x 21 android android  4096 1216 09:22 ../
drwxrwxr-x  6 android android  4096 1215 20:09 bcg729/
drwxrwxr-x 10 android android  4096 1215 20:09 bcmatroska2/
drwxrwxr-x  8 android android  4096 1215 20:09 bctoolbox/
drwxrwxr-x 11 android android  4096 1215 20:09 bcunit/
drwxrwxr-x  9 android android  4096 1215 20:09 belcard/
drwxrwxr-x  9 android android  4096 1215 20:09 belle-sip/
drwxrwxr-x  9 android android  4096 1215 20:09 belr/
drwxrwxr-x  7 android android  4096 1215 20:09 bzrtp/
-rw-rw-r--  1 android android  2069 1215 19:45 CHANGELOG.md
drwxrwxr-x  8 android android  4096 1216 11:00 cmake/
drwxrwxr-x 10 android android  4096 1215 20:09 cmake-builder/
-rw-rw-r--  1 android android  5602 1215 19:45 CMakeLists.txt
drwxrwxr-x  2 android android  4096 1215 19:45 docker-files/
-rw-rw-r--  1 android android    10 1215 19:45 .envrc
drwxrwxr-x 26 android android  4096 1215 19:45 external/
-rw-rw-r--  1 android android  7121 1215 19:45 flake.lock
-rw-rw-r--  1 android android  4274 1215 19:45 flake.nix
drwxrwxr-x  9 android android  4096 1215 19:46 .git/
drwxrwxr-x  3 android android  4096 1215 19:45 .github/
-rw-rw-r--  1 android android   302 1215 19:45 .gitignore
drwxrwxr-x  9 android android  4096 1215 19:45 .gitlab-ci-files/
-rw-rw-r--  1 android android  1598 1215 19:45 .gitlab-ci-tunnel.yml
-rw-rw-r--  1 android android  3439 1215 19:45 .gitlab-ci.yml
-rw-rw-r--  1 android android  4552 1215 19:45 .gitmodules
drwxrwxr-x 17 android android  4096 1215 20:09 liblinphone/
-rw-rw-r--  1 android android 34523 1215 19:45 LICENSE.txt
drwxrwxr-x  9 android android  4096 1215 20:09 lime/
drwxrwxr-x 14 android android  4096 1215 20:09 mediastreamer2/
drwxrwxr-x  3 android android  4096 1215 20:09 msaaudio/
drwxrwxr-x  6 android android  4096 1215 20:09 msamr/
drwxrwxr-x  2 android android  4096 1215 20:09 msandroidcamera2/
drwxrwxr-x  3 android android  4096 1215 20:09 mscodec2/
drwxrwxr-x  4 android android  4096 1215 20:09 msoboe/
drwxrwxr-x  5 android android  4096 1215 20:09 msopenh264/
drwxrwxr-x  5 android android  4096 1215 20:09 mssilk/
drwxrwxr-x  3 android android  4096 1215 20:09 mswasapi/
drwxrwxr-x  4 android android  4096 1215 20:09 mswebrtc/
drwxrwxr-x  4 android android  4096 1215 20:10 mswinrtvid/
drwxrwxr-x 10 android android  4096 1215 20:10 ortp/
drwxrwxr-x  7 android android  4096 1215 20:10 postquantumcryptoengine/
-rw-rw-r--  1 android android 13876 1215 19:45 README.md
drwxrwxr-x  5 android android  4096 1215 19:45 tester/

开始编译:

# 设置Android SDK 路径
linphone-sdk$ export ANDROID_SDK_ROOT=/home/android/Android/Sdk
# 设置Android NDK 路径
linphone-sdk$ export PATH=$PATH:/home/android/Android/Sdk/ndk/20.0.5594570
linphone-sdk$ mkdir build
linphone-sdk$ cd build
# 参考官方
linphone-sdk/build$ cmake .. -DLINPHONESDK_PLATFORM=Android -DLINPHONESDK_ANDROID_ARCHS=arm64,x86,armv7 -DENABLE_SILK=YES -DENABLE_G729==YES
# 开始编译
linphone-sdk/build$ cmake --build . -j4

编译时间比较长, 耐心等待即可.

-DLINPHONESDK_ANDROID_ARCHS的值, 可以参考:

arm -> armeabi 已不受支持:

CMake Error at /home/android/Android/Sdk/ndk/20.0.5594570/build/cmake/android.toolchain.cmake:177 (message):
  armeabi is no longer supported.  Use armeabi-v7a.

在这里插入图片描述

linphone-sdk/cmake/Android/CopyLibs.cmake


编译完成

linphone-sdk/build$ ll linphone-sdk/bin/outputs/aar/
total 198508
drwxrwxr-x 2 android android      4096 1217 09:50 ./
drwxrwxr-x 4 android android      4096 1217 09:49 ../
-rw-rw-r-- 1 android android 167525201 1217 09:50 linphone-sdk-android-debug.aar
-rw-rw-r-- 1 android android  35736951 1217 09:49 linphone-sdk-android-release.aar

生成的linphone-sdk-android-release.aar, 便可以导入给APP开发用.

导入后, 出现找不到libc++_shared.so

Caused by: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.saike.ocs-cdHJzDKRk6PW1v0eDsFENQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.saike.ocs-cdHJzDKRk6PW1v0eDsFENQ==/lib/arm, /data/app/com.saike.ocs-cdHJzDKRk6PW1v0eDsFENQ==/base.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib]]] couldn't find "libc++_shared.so"
	at java.lang.Runtime.loadLibrary0(Runtime.java:1011)
	at java.lang.System.loadLibrary(System.java:1657)
	at org.linphone.core.FactoryImpl.<clinit>(Factory.java:727)
	at org.linphone.core.Factory.instance(Factory.java:49) 
	at com.saike.ocs.phone.SipPhone.loadSipLibs(SipPhone.java:51) 
	at com.saike.ocs.phone.PhoneManager$1.run(PhoneManager.java:60) 

在这里插入图片描述
照着改, 增加一行即可

+ 	file(COPY "${CMAKE_ANDROID_NDK}/sources/cxx-stl/llvm-libc++/libs/${_libarch}/libc++_shared.so" DESTINATION "linphone-sdk/android-${_arch}/lib/")

参考

linphone-sdk
集成第三so之dlopen failed: library “libc++_shared.so” not found
Fixed missing libc++_shared.so that happens sometimes

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值