WebRTC android 编译

522 阅读1分钟
  1. 只能在 Linux 系统上编译,确保电脑能科学上网,并配置命令行 http 代理!

  2. 安装构建工具 depot_tools,并配置环境变量:

    webrtc.googlesource.com/src/+/main/…

  3. 创建工作目录(确保磁盘可用空间足够,建议至少预留50G吧),并进入,执行:

    $ fetch --nohooks webrtc_android
    $ gclient sync
    

    这一步时间很长很长,大概几个小时吧,请耐心等待。

  4. 确定需要编译的 WebRTC 版本:

    chromiumdash.appspot.com/branches

  5. 这里以 M123 为例,切换到 M123 所在分支,并同步:

    $ cd src
    $ git checkout -b m123/6312 branch-heads/6312
    $ cd ..
    $ gclient sync --nohooks
    $ gclient runhooks
    

    如果再次切换分支,例如,从 M123 切换到 M114,再次同步的时候,可能会报错:

    Error: Command 'git -c core.deltaBaseCacheLimit=2g fetch origin debe7d2d1982e540fbd6bd78604bf001753f9e74 --no-tags' returned non-zero exit status 128 in /home/Documents/webrtc_android/src/third_party/libFuzzer/src

    网上好多都说配置 git config --global http.postBuffer 1048576000 之类的,可是我试了并没有卵用,最后是把出问题的目录删除,例如上面的错就是把 third_party/libFuzzer/src 删除,再重新 gcient sync --nohooks 即可。

  6. 安装相关依赖:

    $ cd src
    $ ./build/install-build-deps.sh --android
    
  7. 生成 ninja 工程,确保当前在 src 目录下,执行:

    $ gn gen out/M123/release/arm64 --args='target_os="android" target_cpu="arm64" is_debug=false treat_warnings_as_errors=false'
    
    • To build for ARM64: use target_cpu="arm64"

    • To build for 32-bit x86: use target_cpu="x86"

    • To build for 64-bit x64: use target_cpu="x64"

    tip: 查看 gn args:gn args --list <dir>

  8. 编译项目:

    $ autoninja -C out/M123/release/arm64
    
  9. 编译 AAR:

    $ ./tools_webrtc/android/build_aar.py --build-dir out/aar --arch "armeabi-v7a" "arm64-v8a" --output "out/aar/libwebrtc-M123.aar" --extra-gn-args='treat_warnings_as_errors=false'