linphone android sdk 源码下载编译

简介: linphone android sdk 源码下载编译

前言


image.png


   前面的有写过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.

image.png


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.<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)

image.png

照着改, 增加一行即可


+  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月前
|
Java Android开发 C++
Android Studio JNI 使用模板:c/cpp源文件的集成编译,快速上手
本文提供了一个Android Studio中JNI使用的模板,包括创建C/C++源文件、编辑CMakeLists.txt、编写JNI接口代码、配置build.gradle以及编译生成.so库的详细步骤,以帮助开发者快速上手Android平台的JNI开发和编译过程。
91 1
|
2月前
|
JavaScript 前端开发 Java
[Android][Framework]系统jar包,sdk的制作及引用
[Android][Framework]系统jar包,sdk的制作及引用
43 0
|
2月前
|
开发工具 uml git
AOSP源码下载方法,解决repo sync错误:android-13.0.0_r82
本文分享了下载AOSP源码的方法,包括如何使用repo工具和处理常见的repo sync错误,以及配置Python环境以确保顺利同步特定版本的AOSP代码。
169 0
AOSP源码下载方法,解决repo sync错误:android-13.0.0_r82
|
2月前
|
Java Android开发 芯片
使用Android Studio导入Android源码:基于全志H713 AOSP,方便解决编译、编码问题
本文介绍了如何将基于全志H713芯片的AOSP Android源码导入Android Studio以解决编译和编码问题,通过操作步骤的详细说明,展示了在Android Studio中利用代码提示和补全功能快速定位并修复编译错误的方法。
48 0
使用Android Studio导入Android源码:基于全志H713 AOSP,方便解决编译、编码问题
|
2月前
|
API 开发工具 Android开发
Android Studio:解决AOSP自编译framework.jar引用不到的问题
在Android Studio中解决AOSP自编译framework.jar引用问题的几种方法,包括使用相对路径、绝对路径和通过`${project.rootDir}`动态获取路径的方法,以避免硬编码路径带来的配置问题。
43 0
Android Studio:解决AOSP自编译framework.jar引用不到的问题
|
2月前
|
存储 监控 数据库
Android经典实战之OkDownload的文件分段下载及合成原理
本文介绍了 OkDownload,一个高效的 Android 下载引擎,支持多线程下载、断点续传等功能。文章详细描述了文件分段下载及合成原理,包括任务创建、断点续传、并行下载等步骤,并展示了如何通过多种机制保证下载的稳定性和完整性。
35 0
|
2月前
|
开发工具 Android开发 git
全志H713 Android 11 :给AOSP源码,新增一个Product
本文介绍了在全志H713 Android 11平台上新增名为myboard的产品的步骤,包括创建新的device目录、编辑配置文件、新增内核配置、记录差异列表以及编译kernel和Android系统的详细过程。
36 0
|
2月前
|
Ubuntu 开发工具 Android开发
Repo下载、编译AOSP源码:基于Ubuntu 21.04,android-12.1.0_r27
文章记录了作者在Ubuntu 21.04服务器上配置环境、下载并编译基于Android 12.1.0_r27版本的AOSP源码的过程,包括解决编译过程中遇到的问题和错误处理方法。
56 0
|
2月前
|
开发工具 Android开发
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
140 4
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
|
2月前
|
Dart 开发工具 Android开发
Android Studio导入Flutter项目提示Dart SDK is not configured
Android Studio导入Flutter项目提示Dart SDK is not configured
93 4

热门文章

最新文章

下一篇
无影云桌面