WebRTC是一个开放的网络标准,可以为您的应用程序添加实时通信功能。它支持在对等方之间发送视频、语音和通用数据。WebRTC 背后的技术可以在所有主流浏览器中以普通 JavaScript API 的形式提供。对于 Android 和 iOS,有一个库可以提供相同的功能。
好的。那么,如果我们想开发一个能实现 WebRTC 技术的实时音频视频通信 Android 应用程序,我们需要实现官方库,对吗?
Android WebRTC 官方库
implementation 'org.webrtc:google-webrtc:1.0.+'
是的。谷歌为我们提供了官方库,但遗憾的是,该库维护不善,而且通过 jCenter 提供的库已经过时。
该库的版本基于提交位置,如 “1.0.32006”。它包含本地库和允许与本地库接口的 java 类。
好的。但是,如果我们想构建最新的 Android WebRTC 版本,就这么难吗?我们有相关文档吗?
为 Android 构建 WebRTC
是的!我们有文档!关于如何为 Android 构建 WebRTC 的文档很多,也很混乱。有许多要求和软件包需要下载和配置。多年前,我第一次尝试构建 WebRTC 时就遇到了许多错误和配置不当,现在情况依然如此。我在网上没有找到关于编译错误、发布版本、与 Android 框架集成、本地崩溃等方面的帮助。
我知道当代码无法编译时的沮丧心情,而这些代码是由一家大型科技公司和许多工程师编写的…
为此,我编写了一个脚本,用于下载、编译和构建 Android 版 WebRTC。
All-in-one script
您可以在 GitHub 上的此存储库中找到我的脚本。
Android WebRTC 的开发仅支持 Linux。
要开始使用我的脚本,需要下载它:
wget https://raw.githubusercontent.com/rfazi/android_webrtc_build/main/entrypoint.sh
然后添加执行权限:
chmod +x entrypoint.sh
在运行之前,让我们先分析一下我的脚本。(由于某些命令非常简单易懂,因此将跳过这些命令)
BASE=/webrtc
我们需要一个文件夹来存放编译和构建 WebRTC 所需的所有内容。显然,您可以更改这个目录。
apt update && apt install -y git curl wget lsb-release python3 sudo
要编译和构建 WebRTC,我们需要一些依赖项,使用上述命令可以下载并安装它们。
git config --global user.name "John Doe"
git config --global user.email "jdoe@email.com"
git config --global core.autocrlf false
git config --global core.filemode false
文档中说我们需要在构建 WebRTC 前配置 git。如果您的环境中已经配置了 git,则可以删除此命令。
if [ -d "depot_tools" ]
then
echo "Depot tools already downloaded"
else
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
fi
export PATH=$BASE/depot_tools:$PATH
./depot_tools/update_depot_tools
Depot 工具将用于编译和构建 WebRTC。
fetch --nohooks --no-history webrtc_android
gclient sync
此时,我们将下载 Android 版 WebRTC 的源代码。使用 “nohooks “指令,我们可以告诉程序不要运行钩子,因为我们没有安装依赖项。使用 “no-history “指令,我们可以节省时间和存储空间。
使用 “gclient sync “指令,我们将下载 Android 依赖项。
gn gen out/Release_...
现在,有了 WebRTC for Android 源代码,可以对其进行编译了。我们将使用 “gn “命令配置编译指令环境,为 x86、x64、arm 和 arm64 架构创建指令。
ninja -C out/Release_... -j 1
就是这样!“ninja“负责编译和构建本地库和 java 类。
其余命令将在编译后执行,并将 java 类和本地库移动到 /webrtc/output 文件夹下。
执行脚本
阅读并理解我的脚本如何工作后,您就可以修改和/或执行它了。
警告:脚本执行时间较长,任务繁重。
我建议在后台执行脚本,例如使用:
nohup ./entrypoint.sh &
通过下面这种方式,可以观看脚本的进度:
cat nohup.out
-- OR --
tail -30 nohup.out
作者:Fazi Ruben
原文:https://medium.com/@fazi.ruben/how-to-build-webrtc-for-android-683c876c9d84
版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。