linphone android sdk 源码下载编译
创始人
2024-05-05 14:57:07
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 12月 16 15:57 ./
drwxrwxr-x 21 android android  4096 12月 16 09:22 ../
drwxrwxr-x  6 android android  4096 12月 15 20:09 bcg729/
drwxrwxr-x 10 android android  4096 12月 15 20:09 bcmatroska2/
drwxrwxr-x  8 android android  4096 12月 15 20:09 bctoolbox/
drwxrwxr-x 11 android android  4096 12月 15 20:09 bcunit/
drwxrwxr-x  9 android android  4096 12月 15 20:09 belcard/
drwxrwxr-x  9 android android  4096 12月 15 20:09 belle-sip/
drwxrwxr-x  9 android android  4096 12月 15 20:09 belr/
drwxrwxr-x  7 android android  4096 12月 15 20:09 bzrtp/
-rw-rw-r--  1 android android  2069 12月 15 19:45 CHANGELOG.md
drwxrwxr-x  8 android android  4096 12月 16 11:00 cmake/
drwxrwxr-x 10 android android  4096 12月 15 20:09 cmake-builder/
-rw-rw-r--  1 android android  5602 12月 15 19:45 CMakeLists.txt
drwxrwxr-x  2 android android  4096 12月 15 19:45 docker-files/
-rw-rw-r--  1 android android    10 12月 15 19:45 .envrc
drwxrwxr-x 26 android android  4096 12月 15 19:45 external/
-rw-rw-r--  1 android android  7121 12月 15 19:45 flake.lock
-rw-rw-r--  1 android android  4274 12月 15 19:45 flake.nix
drwxrwxr-x  9 android android  4096 12月 15 19:46 .git/
drwxrwxr-x  3 android android  4096 12月 15 19:45 .github/
-rw-rw-r--  1 android android   302 12月 15 19:45 .gitignore
drwxrwxr-x  9 android android  4096 12月 15 19:45 .gitlab-ci-files/
-rw-rw-r--  1 android android  1598 12月 15 19:45 .gitlab-ci-tunnel.yml
-rw-rw-r--  1 android android  3439 12月 15 19:45 .gitlab-ci.yml
-rw-rw-r--  1 android android  4552 12月 15 19:45 .gitmodules
drwxrwxr-x 17 android android  4096 12月 15 20:09 liblinphone/
-rw-rw-r--  1 android android 34523 12月 15 19:45 LICENSE.txt
drwxrwxr-x  9 android android  4096 12月 15 20:09 lime/
drwxrwxr-x 14 android android  4096 12月 15 20:09 mediastreamer2/
drwxrwxr-x  3 android android  4096 12月 15 20:09 msaaudio/
drwxrwxr-x  6 android android  4096 12月 15 20:09 msamr/
drwxrwxr-x  2 android android  4096 12月 15 20:09 msandroidcamera2/
drwxrwxr-x  3 android android  4096 12月 15 20:09 mscodec2/
drwxrwxr-x  4 android android  4096 12月 15 20:09 msoboe/
drwxrwxr-x  5 android android  4096 12月 15 20:09 msopenh264/
drwxrwxr-x  5 android android  4096 12月 15 20:09 mssilk/
drwxrwxr-x  3 android android  4096 12月 15 20:09 mswasapi/
drwxrwxr-x  4 android android  4096 12月 15 20:09 mswebrtc/
drwxrwxr-x  4 android android  4096 12月 15 20:10 mswinrtvid/
drwxrwxr-x 10 android android  4096 12月 15 20:10 ortp/
drwxrwxr-x  7 android android  4096 12月 15 20:10 postquantumcryptoengine/
-rw-rw-r--  1 android android 13876 12月 15 19:45 README.md
drwxrwxr-x  5 android android  4096 12月 15 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 12月 17 09:50 ./
drwxrwxr-x 4 android android      4096 12月 17 09:49 ../
-rw-rw-r-- 1 android android 167525201 12月 17 09:50 linphone-sdk-android-debug.aar
-rw-rw-r-- 1 android android  35736951 12月 17 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.(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

相关内容

热门资讯

安卓系统自带的网页,功能与特色... 你有没有发现,每次打开安卓手机,那熟悉的系统界面里总有一个默默无闻的小家伙——安卓系统自带的网页浏览...
美咖云系统安卓版,开启智能生活... 你有没有发现,最近手机上多了一个叫“美咖云系统安卓版”的小家伙?它就像一个魔法师,轻轻一点,就能让你...
安卓系统推荐最好的手机,盘点性... 你有没有想过,拥有一部性能卓越的手机,就像是拥有了移动的宝藏库?在这个信息爆炸的时代,一部好手机不仅...
安卓11系统能精简吗,释放潜能 你有没有发现,随着手机越来越智能,系统也越来越庞大?安卓11系统,这个最新的操作系统,是不是也让你觉...
安卓自动重启系统软件,揭秘原因... 手机突然自动重启,是不是感觉整个人都不好了?别急,今天就来和你聊聊这个让人头疼的安卓自动重启系统软件...
苹果手机x刷安卓系统,探索安卓... 你有没有想过,你的苹果手机X竟然也能刷上安卓系统?是的,你没听错,就是那个一直以来都和我们苹果手机X...
安卓系统智商低吗,智商低下的真... 你有没有想过,为什么安卓系统的智商总被调侃得好像有点低呢?是不是觉得它总是慢吞吞的,有时候还犯点小错...
安卓系统手机联系人,揭秘你的社... 你有没有发现,手机里的联系人列表就像是一个小小的社交圈呢?里面藏着我们的亲朋好友、工作伙伴,甚至还有...
安卓系统免费铃声下载,打造个性... 手机里那首老掉牙的铃声是不是让你觉得有点out了呢?别急,今天就来给你支个招,让你轻松给安卓手机换上...
安卓系统用哪个桌面好,打造个性... 你有没有发现,手机桌面可是我们每天都要面对的“脸面”呢?换一个好看的桌面,心情都能跟着好起来。那么,...
虚拟大师是安卓10系统,功能与... 你知道吗?最近在手机圈里,有个新玩意儿引起了不小的轰动,那就是虚拟大师!而且,更让人惊喜的是,这个虚...
安卓系统与苹果优缺点,系统优缺... 说到手机操作系统,安卓和苹果绝对是两大巨头,它们各有各的特色,就像两道不同的美味佳肴,让人难以抉择。...
安卓win双系统主板,融合与创... 你有没有想过,一台电脑如果既能流畅运行安卓系统,又能轻松驾驭Windows系统,那该有多爽啊?没错,...
安卓系统可精简软件,轻松提升手... 你有没有发现,手机里的安卓系统越来越庞大,软件也越装越多,有时候感觉手机就像个“大肚子”,不仅运行速...
安卓系统基于linux的代码,... 你有没有想过,那个陪伴你每天刷抖音、玩游戏、办公的安卓系统,其实背后有着一套复杂的基于Linux的代...
苹果和安卓的拍照系统,谁更胜一... 你有没有发现,现在手机拍照已经成为我们生活中不可或缺的一部分呢?无论是记录生活的点滴,还是捕捉美丽的...
苹果和安卓系统不同吗,系统差异... 你有没有想过,为什么你的手机里装的是苹果的iOS系统,而朋友的手机却是安卓系统呢?这两种系统,看似都...
安卓系统有多少级,揭秘其多级架... 你有没有想过,那个陪伴我们日常生活的安卓系统,它其实有着丰富的层级结构呢?没错,就是那个让我们的手机...
华为鸿蒙系统与安卓的,技术融合... 你知道吗?最近科技圈可是炸开了锅,华为鸿蒙系统与安卓的较量成为了大家热议的话题。这不,今天我就来给你...
什么安卓手机是苹果系统,搭载苹... 你有没有想过,为什么有些人宁愿花大价钱买苹果手机,而有些人却对安卓手机情有独钟呢?其实,这个问题背后...