参考webrtc官网开发流程
1 搭建环境
1.1 安装Ubuntu-16.0.4
1.2 解压android-ndk-r19c-linux-x86_64、jdk-8u111-linux-x64和depot_tools到指定目录
1.3 配置环境变量:$ sudo vim /etc/profile,文件末尾添加如下:
export JAVA_HOME=/home/XXX/develop-tools/java-tools/jdk1.8.0_111
export JRE_HOME=$JAVA_HOME/jre
export JAVA_PATH=$JAVA_HOME/bin:$JRE_HOME/bin
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export DEPOT_ROOT=/home/XXX/develop-tools/depot-tools
export NDK_ROOT=/home/XXX/develop-tools/android-ndk-r19c
export PATH=$JAVA_PATH:$DEPOT_ROOT:$NDK_ROOT:$PATH
wq退出保存
$ sudo source /etc/profile,使配置生效
2 下载编译android webrtc源码
2.1 创建webrtc_android路径,并下载代码(推荐使用Lantern翻墙,已经下载,则忽略)
$ mkdir webrtc_android
$ cd webrtc_android
$ fetch --nohooks webrtc_android
$ gclient sync
$ gclient runhooks
注:步骤d中下载过程中如果报如下错误
**error: RPC failed; curl 56 GnuTLS recv error (-9): A TLS packet with unexpected length was received**
做如下设置:
$ sudo apt purge git
$ sudo apt install git
$ git config http.sslVerify false
$ git config --global http.postBuffer 1048576000
2.2 编译android webrtc源码
a. 安装所有依赖
$ ./src/build/install-build-deps.sh
b.配置编译环境
$ cd src/
$ . build/android/envsetup.sh
c. 使用gn构建生成项目
$ gn gen out/Release --args='target_os="android" target_cpu="arm" is_debug=false rtc_use_h264=true rtc_include_tests=false '
注:
1. 没有is_debug=false这个参数时,会生成libwebrtc.jar包
2. rtc_use_h264=true使其支持H264编码
3. rtc_include_tests=false不编译测试程序,缩短编译时间
4. 如果编译时想自定义android sdk和ndk路径,指定android_sdk_rootandroid_ndk_root两参数的值即可
6. 编译Linux版本:
$ gn gen out/linux --args='target_os="linux" target_cpu="x64" is_component_build=false is_debug=false ffmpeg_branding="Chrome" rtc_use_h264=true'
d. 编译
正常构建项目(out / Release应该是使用GN生成构建文件时使用的目录)
$ ninja -C out/Release AppRTCMobile(可选)
e. 生成项目文件
$ build/android/gradle/generate_gradle.py --output-directory $PWD/out/Release --target "//examples:AppRTCMobile" --use-gradle-process-resources --split-projects –canary
(会在用户主目录下生成Android/sdk路径)
f. 清除编译
$ ninja -C out/Release/ -t clean
g. 打包aar文件
$ cd webrtc_android/src
$ tools_webrtc/android/build_aar.py --build-dir out --arch "armeabi-v7a"