在mac下手动编译迁移的android版webrtc组件

发布于:2025-07-04 ⋅ 阅读:(19) ⋅ 点赞:(0)

我原先使用的android版webrtc是在linux下编译的,现在因为某些原因需要把整个库迁移到mac下编译。

把代码迁移完后,正常是需要通过gclient sync 重新构建编译环境,但是由于网络限制等方面原因,会导致完成的比较慢。

在摸索一阵后,找到了一种方式可以快速的编译出webrtc,步骤如下:

假设已经有 NDK、depot_tools、ninja,并且可以正常使用了

1.修改 src/build/config/compiler/BUILD.gn

由于NDK提供的clang交叉编译器不支持该选项,所以需要注释掉:

#asmflags = [ "-Wa,-fdebug-compilation-dir,." ]

2.修改 src/build/toolchain/android/BUILD.gn

默认使用的 eu-strip是linux下的elf可执行文件,因此需要修改:

strip = rebase_path("//buildtools/third_party/eu-strip/bin/eu-strip",
                        root_build_dir)
修改为:

strip = _tool_prefix + "strip"

3.在src目录下执行gn命令生成ninja编译脚本

clang_base_path:需要设置成 NDK 的编译器目录 /Users/plants/Workspace/Video/android-ndk-r19c/toolchains/llvm/prebuilt/darwin-x86_64/

android_ndk_root:需要设置成 NDK 的安装目录 /Users/plants/Workspace/Video/android-ndk-r19c

custom_toolchain:需要设置成android特定编译器环境 //build/toolchain/android:android_clang_arm64

具体命令行如下:

gn gen out/Release/arm64-v8a --args='is_debug=false target_os="android" target_cpu="arm64" rtc_include_tests=false rtc_build_examples=false proprietary_codecs=true ffmpeg_branding="Chrome" clang_base_path="/Users/plants/Workspace/Video/android-ndk-r19c/toolchains/llvm/prebuilt/darwin-x86_64/" clang_use_chrome_plugins=false android_ndk_root="/Users/plants/Workspace/Video/android-ndk-r19c" custom_toolchain="//build/toolchain/android:android_clang_arm64" android64_ndk_api_level=21'

4.执行编译命令

ninja -C out/Release/armeabi-v7a

这样就可以在不重新同步编译环境的情况下直接编译webrtc组件。

注意:本方式应对的是老版本的webrtc(M75),使用的NDK也是老的r19c,因此对于新版本的webrtc可能不适用。另外我只编译了webrtc中音视频相关的组件,如果编译其它的组件可能还会出现其它问题。


网站公告

今日签到

点亮在社区的每一天
去签到