如何编译Licode源码以适配Android JNI及多ABI架构?
编译Licode源码用于Android JNI(多ABI支持)
前置准备
- 安装Android NDK(推荐r21e版本,避免新API兼容性问题),设置环境变量
ANDROID_NDK_ROOT指向NDK根目录 - 拉取Licode源码:
git clone https://github.com/lynckia/licode.git - 安装构建依赖:CMake、autoconf、automake、libtool、pkg-config(根据系统包管理器安装,如Ubuntu用
apt-get install,macOS用brew install)
交叉编译依赖库(libsrtp、OpenSSL、opus)
Licode依赖的第三方库需先为目标ABI单独交叉编译,以armeabi-v7a为例,其他ABI替换对应工具链参数即可:
- 设置交叉编译环境变量:
export ABI=armeabi-v7a export TOOLCHAIN=$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64 export TARGET=armv7a-linux-androideabi export API=21 # 最低兼容Android API等级 export CC=$TOOLCHAIN/bin/$TARGET$API-clang export CXX=$TOOLCHAIN/bin/$TARGET$API-clang++ export AR=$TOOLCHAIN/bin/llvm-ar export RANLIB=$TOOLCHAIN/bin/llvm-ranlib export STRIP=$TOOLCHAIN/bin/llvm-strip export PATH=$TOOLCHAIN/bin:$PATH
- 编译OpenSSL:
git clone https://github.com/openssl/openssl.git cd openssl ./Configure android-arm -D__ANDROID_API__=$API --prefix=/path/to/openssl-$ABI make make install cd ..
- 编译libsrtp:
git clone https://github.com/cisco/libsrtp.git cd libsrtp ./configure --host=$TARGET --prefix=/path/to/libsrtp-$ABI --enable-android-openssl --with-openssl-dir=/path/to/openssl-$ABI make make install cd ..
- 编译opus:
git clone https://github.com/xiph/opus.git cd opus ./autogen.sh ./configure --host=$TARGET --prefix=/path/to/opus-$ABI --disable-shared --enable-static make make install cd ..
编译Licode各ABI版本
针对armeabi-v7a、arm64-v8a、x86、x86-64分别执行以下步骤:
- 创建对应ABI的构建目录:
mkdir licode-build-$ABI && cd licode-build-$ABI
- 配置交叉编译参数(替换对应ABI的
TARGET和依赖路径):
# arm64-v8a对应TARGET为aarch64-linux-android,x86对应i686-linux-android,x86-64对应x86_64-linux-android ../licode/configure \ --host=$TARGET \ --prefix=/path/to/licode-output-$ABI \ --with-openssl=/path/to/openssl-$ABI \ --with-srtp=/path/to/libsrtp-$ABI \ --with-opus=/path/to/opus-$ABI \ --enable-shared \ --disable-static
- 编译并安装:
make -j$(nproc) make install
产物说明
编译完成后,/path/to/licode-output-$ABI/lib目录下会生成Licode的.so动态库,include目录下是JNI开发所需的头文件。将这些文件按ABI分类放入Android项目的jniLibs对应子目录即可。
内容的提问来源于stack exchange,提问作者Program-Me-Rev
相关产品推荐
相关产品推荐

