2、移动端环境搭建:Android Studio配置、iOS Xcode配置、WebRTC源码编译

说实话,移动端开发最磨人的不是写代码,而是搭环境。尤其是WebRTC这种底层库,编译一次能让你怀疑人生。我当年第一次编译WebRTC源码,整整折腾了两天——嗯,后来发现是代理没配好。

这一章,咱们就把Android和iOS两边的环境彻底搞定。你跟着我的步骤走,应该能少踩不少坑。

2.1 Android Studio 配置

Android Studio 的安装我就不啰嗦了,直接说关键点。

2.1.1 必备组件

我个人习惯用最新稳定版的Android Studio。但要注意,WebRTC对NDK版本有要求,不是越新越好。

组件 推荐版本 备注
Android Studio 2023.1.1 (Hedgehog) 或更新 稳定版即可
Gradle 8.2+ 与AGP版本匹配
NDK r25c 或 r26b 我用r25c踩坑最少
CMake 3.22.1+ SDK Manager里装
⚠️ 注意:NDK版本别乱选。我曾经用r27编译WebRTC,结果链接阶段报了一堆莫名其妙的错。后来回退到r25c,一次过。

2.1.2 SDK Manager 配置

打开SDK Manager,确保以下SDK Platform已安装:

  • Android API 34(最新稳定版)
  • Android API 33(兼容性测试用)
  • Android API 21(最低支持版本)

你想想看,如果只装最新版,老设备跑不了;如果只装老版本,新特性用不上。所以我的建议是:装三个版本,覆盖主流范围。

2.1.3 Gradle 配置优化

WebRTC的Android工程比较大,Gradle配置需要调一下。不然编译能把你电脑卡死。

// gradle.properties
org.gradle.jvmargs=-Xmx4096m -XX:MaxMetaspaceSize=512m
org.gradle.parallel=true
org.gradle.caching=true
android.useAndroidX=true
android.enableJetifier=true
💡 小技巧:如果你内存够大,把Xmx改成6144m。我16GB内存的MacBook Pro,设4096m刚好,再高反而会触发系统内存压力。

2.2 iOS Xcode 配置

iOS这边相对简单,但坑也不少。尤其是WebRTC的iOS编译,对Xcode版本很敏感。

2.2.1 Xcode 版本选择

我个人建议用Xcode 15.0或15.1。为什么?因为WebRTC官方CI用的就是这个版本,兼容性最好。

Xcode版本 macOS要求 WebRTC兼容性
15.0 Sonoma 14.0+ ✅ 官方推荐
14.3 Ventura 13.3+ ✅ 可用,但需打补丁
13.x Monterey 12.x ⚠️ 部分API已废弃

2.2.2 Command Line Tools

这个很多人会忘。Xcode装完不代表命令行工具也装好了。

xcode-select --install
# 验证安装
xcode-select -p
# 输出应该是:/Applications/Xcode.app/Contents/Developer

我曾经有一次编译WebRTC的iOS版本,死活报找不到SDK。折腾了半天,发现是Command Line Tools指向了旧版Xcode。嗯,这种低级错误犯一次就够了。

2.2.3 CocoaPods 配置

WebRTC的iOS依赖管理用CocoaPods。但要注意,不要用系统自带的Ruby装,容易权限出问题。

# 用Homebrew装Ruby
brew install ruby
# 然后装CocoaPods
sudo gem install cocoapods
# 验证
pod --version
📌 重点:WebRTC的Podspec里依赖了Google的Utilities库。如果你在公司内网,记得配好代理。不然pod install会卡在下载阶段。

2.3 WebRTC 源码编译

终于到了重头戏。WebRTC源码编译,说白了就是两件事:拉代码、跑脚本。但这两件事里藏着无数细节。

2.3.1 depot_tools 安装

WebRTC用Google的depot_tools管理代码。这东西是编译的第一步,也是很多人翻车的地方。

# 克隆depot_tools
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
# 加到PATH
export PATH=$PWD/depot_tools:$PATH
# 建议写到~/.zshrc或~/.bash_profile
echo 'export PATH=$PATH:/path/to/depot_tools' >> ~/.zshrc
⚠️ 注意:depot_tools的路径不要有空格!我同事的macOS用户名带空格,结果gclient sync一直报错。最后重装系统才解决。

2.3.2 拉取WebRTC源码

这一步最耗时。WebRTC源码加上git历史,大概10GB左右。网速慢的话,建议晚上挂着下载。

# 创建目录
mkdir webrtc && cd webrtc
# 拉取源码
fetch --nohooks webrtc
# 同步依赖
gclient sync

为什么会这么慢?因为WebRTC依赖了上百个第三方库,每个都要单独拉取。我记得第一次跑gclient sync,等了整整三个小时。

2.3.3 Android 编译

Android编译需要先配置NDK路径。WebRTC的编译脚本会自动检测,但有时候会抽风。

# 进入src目录
cd src
# 生成Android编译配置
gn gen out/android --args='target_os="android" target_cpu="arm64"'
# 开始编译
ninja -C out/android
参数 说明 常用值
target_cpu 目标CPU架构 arm64, arm, x64, x86
is_debug 是否调试版本 true/false
is_component_build 是否组件化编译 false(推荐)
💡 小技巧:第一次编译建议用debug模式,方便调试。正式发布时再切release。我一般这样配:gn gen out/android_release --args='target_os="android" target_cpu="arm64" is_debug=false'

2.3.4 iOS 编译

iOS编译比Android简单一些,但要注意架构选择。

# 生成iOS编译配置
gn gen out/ios --args='target_os="ios" target_cpu="arm64"'
# 编译
ninja -C out/ios

如果你需要模拟器版本,把target_cpu改成x64:

gn gen out/ios_sim --args='target_os="ios" target_cpu="x64"'

2.3.5 编译产物说明

编译完成后,你会得到以下关键文件:

  • Android: out/android/libwebrtc.aar(Android Archive包)
  • iOS: out/ios/libwebrtc.a(静态库) + out/ios/WebRTC.framework(Framework包)
  • 头文件: out/android/gen/sdk/android/peerconnection_jni.h 等
📌 重点:iOS的Framework包可以直接拖到Xcode项目里用。Android的AAR包需要放到app/libs目录下,然后在build.gradle里加依赖。

2.4 环境验证

环境搭好了,怎么知道对不对?写个简单的Demo跑一下。

2.4.1 Android Demo

// 在MainActivity里加一段
PeerConnectionFactory.InitializationOptions initOptions =
    PeerConnectionFactory.InitializationOptions.builder(this)
        .setFieldTrials("")
        .create();
PeerConnectionFactory.initialize(initOptions);
PeerConnectionFactory factory = PeerConnectionFactory.builder()
    .createPeerConnectionFactory();
Log.d("WebRTC", "Factory created: " + (factory != null));

2.4.2 iOS Demo

// 在ViewController里
#import <WebRTC/WebRTC.h>

RTCPeerConnectionFactory *factory = [[RTCPeerConnectionFactory alloc] init];
NSLog(@"WebRTC factory: %@", factory ? @"✅" : @"❌");

如果控制台打印出✅,恭喜你,环境搭好了。如果报错,别慌——八成是NDK版本或Xcode版本的问题。回去检查一下。

2.5 知识体系总览

下面这张图,把本章的核心逻辑串起来了。你对照着看,心里就有谱了。

移动端环境搭建 · 知识体系 Android Studio iOS Xcode WebRTC 源码编译 NDK r25c Gradle 8.2+ CMake 3.22+ API 21-34 Xcode 15.0/15.1 Command Line Tools CocoaPods depot_tools gn gen + ninja AAR / Framework ✅ 环境验证:Demo 跑通即成功

这张图里,Android和iOS是两条独立路线,最终都汇聚到WebRTC编译。你只要把左边和中间搞定,右边就是水到渠成的事。

好了,环境搭完,咱们就可以开始写真正的WebRTC代码了。下一章,我会带你从零搭建一个P2P视频通话Demo——嗯,那才是真正有意思的部分。


公众号:蓝海资料掘金营,微信deep3321