构建
- 环境搭建
为了方便编译,我选择的是购买腾讯云轻量应用服务器,价格35元/月,配置如下:
系统镜像 | 地域 | 配置 |
---|---|---|
Ubuntu 20.04 LTS | 美国硅谷 | CPU - 2核 内存 - 2GB 系统盘 - SSD 云硬盘 60GB |
- 安装depot_tools
- 下载depot_tools
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
- 配置环境变量
vim ~/.bashrc
export depot_tools=/home/ubuntu/depot_tools
export PATH=$depot_tools:$PATH
source ~/.bashrc
- 执行gclient
gclient
- 获取源码
- 下载Android源码
mkdir webrtc_android
cd webrtc_android
fetch --nohooks webrtc_android
- gclient同步
gclient sync
- 切换到最近的release分支
cd src
# 创建一个新的分支m125
git checkout -b m125 branch-heads/6422
gclient sync
- 使用gn生成项目
- 安装依赖
./build/install-build-deps.sh
- 生成项目
# arm
gn gen out/Debug --args='target_os="android" target_cpu="arm"'
# arm64
gn gen out/Debug --args='target_os="android" target_cpu="arm64"'
# x86
gn gen out/Debug --args='target_os="android" target_cpu="x86"'
# x64
gn gen out/Debug --args='target_os="android" target_cpu="x64"'
默认生成 debug 版本,release 版本,添加
is_debug=false
参数
- 编译
ninja -C out/Debug
编译成功后,生成的关键产物为:
out/Debug/libjingle_peerconnection_so.so
out/Debug/lib.java/sdk/android/libwebrtc.jar
- 编译aar
./tools_webrtc/android/build_aar.py
编译结果 libwebrtc.aar 默认位于src 目录下,包含了 armeabi-v7a、arm64-v8a、x86 和 x86_64 四种架构的 .so
AppRTC Demo
- 在Android Studio中创建一个新的工程,从
webrtc_android/src/examples/androidapp
目录中复制目录src
res
AndroidManifest.xml
到新建的工程 - 将
webrtc_android/src/examples/androidapp/third_party/autobanh/lib
的autobanh.jar
和生成的libwebrtc.aar
放到新建的工程的app/libs
目录 - 修改app/build.gradle文件,添加如下代码
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation(name: 'libwebrtc', ext: 'aar')
}
参考资源
- 腾讯云 - https://cloud.tencent.com
- webrtc官方源码 - https://webrtc.googlesource.com/src.git
- webrtc分支信息 - https://chromiumdash.appspot.com/branches
- depot_tools - https://chromium.googlesource.com/chromium/tools/depot_tools.git
- WebRTC学习指南 - https://webrtc.mthli.com