WebRTC 源码拉取
参考 webrtc 官方文档
- 可选直接在 Uuntu 系统上拉取源码
- 可选 Docker Ubuntu 容器中拉取源码
编译参数
- 进入
webrtc/src目录下 - 配置基本参数,指定目标系统和目标系统处理器架构和其他参数。以下示例可以配置,编译后就可以正常编译 android 平台 webrtc 的实例 apk, 动态库和
libwebrtc.jar。gn gen out/Android/arm64 --args='target_os="android" target_cpu="arm64" is_clang=true rtc_use_h264=true rtc_use_h265=true is_component_build=false use_rtti=true use_clang_modules=false use_sysroot=false'webrtc 本身有大量的参数可以配置,如果没有设置,则自动由平台 和 cpu 架构自动推断。
- 列举所有参数
使用gn help args指令,可以查看args指令的详细信息。以下信息可以查看,编译 android arm64 平台的完整参数配置。包含自己指定的和 webrtc 编译系统自动推断。# 列举所有的参数 gn args out/Android/arm64 --list - 修改参数
根据第 3 步获取到的参数列表,提取需要修改的字段,追加到第 2 步的指令 --args 参数中,重新执行即可,下面以android_ndk_api_level=21为例:gn gen out/Android/arm64 --args='target_os="android" target_cpu="arm64" is_debug=true is_clang=true rtc_use_h264=true rtc_use_h265=true is_component_build=false use_rtti=true use_clang_modules=false use_sysroot=false android_ndk_api_level=21'加快编译速度,可以追加
rtc_build_examples=false rtc_include_tests=false参数,不编译实例项目和单元测试。
编译
- 进入
webrtc/src目录 - 使用
ninja编译 android 平台 webrtc.ninja -C out/Android/arm64 -j8编译时间较长,需要耐心等待
- 编译 android aar 库包
./webrtc-source/src/tools_webrtc/android/build_aar.py --build-dir out/Android/arm64 --arch arm64-v8a --extra-gn-args="is_debug=false is_clang=true rtc_use_h264=true rtc_use_h265=true is_component_build=false use_rtti=true use_clang_modules=false use_sysroot=false"编译 aar 可能会出现第三方许可证不存在问题,正确编译出
src/libwebrtc.aar文件即可。