一、安装依赖
sudo apt update
sudo apt install -y git curl python3
二、创建工作目录
cd ~
mkdir webrtc_m130
cd webrtc_m130
三、拉取 depot_tools(里面才有 fetch)
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
四、把 depot_tools 加入环境变量(永久)
echo "export PATH=$PATH:~/webrtc_m130/depot_tools" >> ~/.bashrc
source ~/.bashrc
五、验证 fetch 是否正确(可选)
which fetch
必须显示:.../depot_tools/fetch
六、拉取 WebRTC 基础代码(很慢)
fetch --nohooks webrtc_android
七、进入源码目录
cd src
八、切换到 M130 固定版本(关键)https://chromiumdash.appspot.com/branches
git checkout branch-heads/6723
九、同步完整依赖(耗时很长,别中断)
gclient sync -D --with_branch_heads --jobs 8
十、完成,源码路径:
~/webrtc_m130/src
十一、打包,放在任意 Ubuntu 下均可编译
cd ~
tar -zcvf webrtc_m130.tar.gz webrtc_m130/
scp root@xx.xx.xx.xx:~/webrtc_m130/webrtc_m130.tar.gz webrtc_m130.tar.gz
输入阿里云服务器密码将 webrtc_m130.tar.gz 保存到本机
十二、安装 Android 编译依赖
cd ~/webrtc_m130/src
sudo ./build/install-build-deps.sh --android
十三、开始编译 arm64-v8a
gn gen out/android_arm64_release --args='chrome_pgo_phase=0 target_os="android" target_cpu="arm64" is_debug=false symbol_level=0 is_component_build=false is_official_build=true use_rtti=true rtc_include_tests=false rtc_build_examples=false rtc_build_tools=false rtc_include_pulse_audio=false'
ninja -C out/android_arm64_release
注意编译 WebRTC m136 版本时会报错:
python3_bin_reldir.txt not found. need to initialize depot_tools by running gclient, update_depot_tools or ensure_bootstrap.
运行 ensure_bootstrap 即可:
ensure_bootstrap
十四、开始编译 armeabi-v7a
gn gen out/android_arm_release --args='chrome_pgo_phase=0 target_os="android" target_cpu="arm" is_debug=false symbol_level=0 is_component_build=false is_official_build=true use_rtti=true rtc_include_tests=false rtc_build_examples=false rtc_build_tools=false rtc_include_pulse_audio=false'
ninja -C out/android_arm_release
十五、聚集源代码,默认都是 org.webrtc.xxx 文件夹
~/webrtc_m130/src/sdk/android/src/java/org
~/webrtc_m130/src/sdk/android/api/org
~/webrtc_m130/src/rtc_base/java/src/org
~/webrtc_m130/src/third_party/jni_zero/java/src/org //WebRTC m136 及以上版本才需要
~/webrtc_m130/src/out/android_arm64_release<你的输出目录>/gen/sdk/android/video_api_java/generated_java/input_srcjars/org
~/webrtc_m130/src/out/android_arm64_release<你的输出目录>/gen/sdk/android/peerconnection_java/generated_java/input_srcjars/org
十六、Android Studio 下 ProGuard 配置
-keep class org.webrtc.** {*;}
-keep class org.jni_zero.** {*;} //WebRTC m136 及以上版本才需要