ubuntu - 编译 linphone-sdk

业务需求需要定制sdk,首先声明我们需要的是在Android4.4上跑的sdk,因此本次编译的sdk最低支持为19(不同版本需要的环境不一致),编译过程较容易,难点在于环境配置

环境准备

  • Ubuntu 18.04.6 
  • android-sdk_r24.2
  • android-ndk-r17c
  •  - 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`)
    这些东西使用 sudo apt-get install 安装即可

 1、配置sdk

        下载sdk到本地

        wget http://dl.google.com/android/android-sdk_r24.2-linux.tgz

        解压

        tar -zxvf android-sdk_r24.2-linux.tgz

        配置环境变量

        vi /etc/profile

        协议授予

        yes | sdkmanager --licenses && sdkmanager --update

export ANDROID_SDK_ROOT=~/lichang/android/android-sdk-linux
export PATH=$ANDROID_SDK_ROOT/tools:$PATH
export PATH=$ANDROID_SDK_ROOT/cmdline-tools:$PATH
export PATH=$ANDROID_SDK_ROOT/cmdline-tools/bin:$PATH
export PATH=$ANDROID_SDK_ROOT/emulator:$PATH
export PATH=$ANDROID_SDK_ROOT/tools/bin:$PATH

  2、配置ndk

解压后配置环境变量

export ANDROID_NDK_HOME=~/lichang/android/android-ndk-r17c
export PATH=$ANDROID_NDK_HOME:$PATH

 配置后 source /etc/profile 一下

3、安装Java

apt install openjdk-8-jdk

apt install openjdk-17-jdk

为什么下载两个?遇到版本不匹配的问题,切换Java版本方法如下

sudo update-alternatives --config java 

:~/lichang/linphone/linphone-sdk# sudo update-alternatives --config java
There are 3 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-17-openjdk-amd64/bin/java      1711      auto mode
  1            /usr/lib/jvm/java-11-openjdk-amd64/bin/java      1111      manual mode
  2            /usr/lib/jvm/java-17-openjdk-amd64/bin/java      1711      manual mode
* 3            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      manual mode

Press <enter> to keep the current choice[*], or type selection number: 
 

下载地址

编译流程

1、下载源码

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

git checkout release/5.0

git submodule update --init --recursive

全部下载后文件如下,注意不要缺少文件,会导致编译失败(build是自己创建的,后面有步骤):

 2、开始编译

  • mkdir build
  • cd build
  • cmake .. -DCMAKE_VERBOSE_MAKEFILE=ON -DLINPHONESDK_PLATFORM=Android -DLINPHONESDK_ANDROID_ARCHS=armv7 -DENABLE_G729==YES  -DENABLE_VIDEO=NO
  • cmake --build . --parallel 8

编译产物路径如下:

build/linphone-sdk/bin/outputs/aar/linphone-sdk-android-release.aar

遇到问题

1、failed: dlopen failed: cannot locate symbol "__read_chk" referenced by "libbctoolbox.so"...

这个问题折腾的时间比较久,尝试在Android10设备上是可以正常运行的,但是安装在Android4.4上就提示这个错误,后来在GitHub上找到了解决方法,使用NDK 17c or older.

链接如下:Android 4.4 arr Error · Issue #56 · BelledonneCommunications/linphone-sdk · GitHub

2、定制codec顺序

这个是在app实现的,源码部分没太看明白,也找到了相关的 Issue,如下:

How to set order for audio codec with latest source? · Issue #62 · BelledonneCommunications/linphone-iphone · GitHub [Linphone-users] Linphone Android Codec priority

 按顺序设置参数即可

其实按照README步骤基本都能实现,主要还是网络环境得支持才行

相关推荐

  1. Ubuntu 22.04编译RV1126_RV1109_LINUX SDK

    2024-03-25 17:30:04       43 阅读
  2. 【RV1126】Ubuntu22.04下sdk编译问题汇集

    2024-03-25 17:30:04       36 阅读
  3. Ubuntu 安装 Vulkan SDK

    2024-03-25 17:30:04       31 阅读
  4. 安装编译cpprest sdk

    2024-03-25 17:30:04       44 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-25 17:30:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-25 17:30:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-25 17:30:04       82 阅读
  4. Python语言-面向对象

    2024-03-25 17:30:04       91 阅读

热门阅读

  1. 为什么大家都在推美国MSB?

    2024-03-25 17:30:04       40 阅读
  2. 编程生活day3--Left Pad、出生年

    2024-03-25 17:30:04       42 阅读
  3. 服务器如何检查端口是否被占用并杀死进程

    2024-03-25 17:30:04       41 阅读
  4. AWTK-MODBUS 服务器

    2024-03-25 17:30:04       42 阅读
  5. Redis 基础命令详解【保姆级教材】

    2024-03-25 17:30:04       52 阅读
  6. ARM的三个按键实验

    2024-03-25 17:30:04       41 阅读
  7. bert-base-chinese另外的加载方法.txt

    2024-03-25 17:30:04       43 阅读
  8. 抖店好不好做?新手小白怎么做?教你从0到1!

    2024-03-25 17:30:04       44 阅读