1.下载depot tools
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git depot_tools
添加到PATH
export PATH=$PATH:/pathtodepot_tools
2.下载webrtc android源码
mkdir webrtc_android
cd webrtc_android
fetch --nohooks webrtc_android
gclient sync
3.下载并配置android-ndk环境
wget https://dl.google.com/android/repository/android-ndk-r27-linux-x86_64.zip
export ANDROID_NDK_HOME=/path/to/android-ndk
export PATH=$PATH:$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin
4.进行工程配置
cd src
gn gen out/Default --args='is_debug=false target_os="android" target_cpu="arm64" rtc_include_tests=false rtc_build_examples=false rtc_build_tools=false is_component_build=false use_custom_libcxx=false rtc_use_h264=true rtc_enable_protobuf=true use_rtti=true treat_warnings_as_errors=false rtc_include_internal_audio_device=true android64_ndk_api_level=29 android32_ndk_api_level=29 android_ndk_root="/home/hujiancheng/Desktop/android-ndk-r27-linux/android-ndk-r27"'
上面的配置包括启用h264编解码,不编译tools与examples,use_custom_libcxx=false用来拒绝使用google自己实现的libcxx,从而避免在使用成果物时与android ndk工具链libc++_shared.so冲突,导致的编译失败问题。
修改src\BUILD.gn文件中的如下配置
rtc_static_library("webrtc"){}中的"sdk"去掉,从而只编译native code,不编译webrtc 自己封装的jni接口。我这样做的原因是对webrtc的源码接口改动比较多,而且可以得到一套与平台无关的业务sdk。
5.编译
ninja -C out/Default