WebRTC名称源自web实时通讯是Web Real-Time Communication的缩写,是一个支持浏览器进行实时语音对话或视频对话的API。它于2011年6月1日开源并在Google、Mozilla、Opera支持下被纳入W3C标准中。
在本教程中,我假设您使用Linux并了解webrtc和android开发。Android webrtc源码编译仅支持在Linux下编译。这包括如何安装Chromium depot_tools开发工具,使用gclient检出Android webrtc源码,构建webrtc的.aar库,将.aar库导入Android app项目中,手动编译Android webrtc库。
安装Chromium depot_tools开发者工具
首先,我们需要安装必须的工具,这其中包括git,ninja构建工具,gclient, gn, fetch等Google开发Chromium的工具。安装这些工具是一个非常简单过程只需要执行以下步骤即可:
首先我们使用mkdir命令在家目录创建myfreax目录,然后使用cd命令切换到该目录中,一切从这个目录开始:
➜ myfreax mkdir ~/myfreax
➜ myfreax cd ~/myfreax
接下来,我们使用git命令克隆google chromium开发工具并将工具的命令导入PATH环境变量:
➜ myfreax git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
➜ myfreax export PATH=$PATH:$HOME/myfreax/depot_tools
现在google chromium开发工具已经在当前终端可用。如你需要持久化PATH环境变量。阅读我们的教程-如何在Linux中将目录添加到PATH。
克隆并检出Android webrtc源码
在获取webrtc源码之前请先使用mkdir命令创建目录一个存放webrtc源码,我们建议把这个放在具有16GB可用空间的分区中。因为源码中包含Android SDK+NDK镜像。接下来使用google chromium开发工具中包含的fetch命令克隆Android的webRTC源码到本地:
➜ myfreax fetch --nohooks webrtc_android
➜ myfreax gclient sync
这个过程可能需要很长时间,因为它需要android构建链工具,大约16GB
然后使用cd命令切换到webrtc_android/src/
目录,并使用以下命令安装构建源码的依赖:
➜ myfreax ./build/install-build-deps.sh
这里值得注意的是你需要确保你的计算机上已安装并配置openjdk,如果你的计算机没有安装openjdk阅读我们的教程--如何在Ubuntu 20.04上安装Java。
在编译源码之前,我们建议创建自己的本地分支,这样保证不会修改到主分支上代码,如果出现错误的更改,也可以继续在主分支检出的源码
➜ myfreax git checkout main
➜ myfreax git new-branch your-branch-name
编译Android WebRTC源码
这里有两种方式可以编译Android webrtc源码,分别是手动编译与python build_aar.py脚本编译。我们先从简单的方式开始,这里感谢webRTC开发者们的贡献python脚本。
使用AAR构建工具编译
首先使用cd命令切换到Android webrtc源码目录,接下来执行aar库的python构建脚本tools_webrtc/android/build_aar.py
:
➜ myfreax tools_webrtc/android/build_aar.py
它将会编译源码并支持所有CPU类型,包括arm64-v8a, armeabi-v7a, x86, x86_64架构的CPU。并打包原生动态库libjingle_peerconnection_so.so
和.jar
库到libwebrtc.aar
文件中。
编译后生成的libwebrtc.aar
文件通常存放在当前工作目录或者src/目录下。如果你是跟随我们教程的每一步,理论你将会在src/目录下可以找到libwebrtc.aar
文件。
最后你可以将aar库添加到项目中或者将它发布maven仓库。如果你不想发布到maven仓库,阅读教程--如何将aar库导入Android安卓应用。
手动编译
手动编译允许你指定CPU架构类型,可能会被使用AAR构建工具快的,但需要你自己将.jar库和原生动态库打包到.aar文件中。首先使用gn命令生成项目:
for debug
➜ myfreax gn gen out/Debug --args='target_os="android" target_cpu="arm"'
for release
➜ myfreax gn gen out/Release --args='is_debug=false is_component_build=false rtc_include_tests=false target_os="android" target_cpu="arm"'
该命令输出的目录是out/Debug或者out/Release,目标CPU架构是arm64。接下来使用ninja命令开始编译源码:
➜ myfreax ninja -C out/Debug
编译时间也许非常长,这取决与你计算机性能。编译后的结果输出到out/Debug或out/Release目录中,原生.so文件可以在lib.unstripped/
目录中找到并且java .jar库文件位于lib.java/
目录中,你需要自己手动将两个文件打包到.aar库中。
结论
你已经知道如何安装Chromium depot_tools开发者工具,检出Android webrtc源码,构建webrtc的.aar库,将.aar库导入Android app项目中,手动编译Android webrtc库。如果需要更多详细信息请参考官方文档。