美文网首页
WebRTC iOS 下载编译

WebRTC iOS 下载编译

作者: 暴走大牙 | 来源:发表于2017-09-14 17:42 被阅读0次

环境

Mac 10.11.6
Xcode 8.2.1
ShadowsocksX-NG 1.3.2 搬瓦工代理

下载

https://webrtc.org/native-code/ios/
一开始尝试不用翻墙下载webrtc代码替换host的方法,hosts文件随便拿几个google的ip出来ping失败率很高,于是还是用回SS翻墙。
git config –-global http.proxy http://127.0.0.1:1087端口号跟SS设置一样。

mkdir WebRTC
cd WebRTC
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
export PATH=`pwd`/depot_tools:"$PATH"
mkdir webrtc_ios
cd webrtc_ios
fetch --nohooks webrtc_ios # 等待,下载好大概4G多
gclient sync # 出现错误如下 
Failed to fetch file gs://chromium-gn/3296ff8c48500334db869c381f6773d016e29696 for src/buildtools/mac/gn.../WebRTC/depot_tools/external_bin/gsutil/gsutil_4.26/gsutil/third_party/boto/boto/pyami/config.py:69: UserWarning: Unable to load AWS_CREDENTIAL_FILE ()

继续尝试还是失败,参考 使用代理同步谷歌项目时出现文件下载失,改用浏览器下载失败的文件应该是可行的,不过我没有采用。
参考WebRTC第六步:下载webrtc提到

添加文件http_proxy.boto
[Boto]
proxy= 127.0.0.1
proxy_port= 1087
设置BOTO代理,解决download google storage失败问题:
set NO_AUTH_BOTO_CONFIG=E:\depot_tools\http_proxy.boto

于是参照上面的步骤,gclient sync还是报错。参考文章下面的评论,去掉=号右边的空格

vim http_proxy.boto 
[Boto] 
proxy=127.0.0.1
proxy_port=1087
export NO_AUTH_BOTO_CONFIG=/path/to/http_proxy.boto 

继续gclient sync不报错,等待完成,大概6G多。

编译

cd src
git branch -a # 查看最近的一个release分支
git checkout -t branch-heads/62 #切到最近一个release分支
xcrun security find-identity -v -p codesigning #找到可用的证书
gn gen out/ios_arm64 --args='target_os="ios" target_cpu="arm64" ios_code_signing_identity="xxxxxx"' --ide=xcode
open -a Xcode.app out/ios/all.xcworkspace

运行AppRTCMobile加入房间,因为GW墙[self makeTurnServerRequestToURL:[NSURL URLWithString:iceServerUrl] WithCompletionHandler:completionHandler];超时返回。
详读ARDAppClient.m代码,大概清楚了主要流程。网上找了一个 STUNstun:stun.xten.com服务器可用,于是修改代码后可以体验Demo。

//  [_turnClient requestServersWithCompletionHandler:^(NSArray *turnServers,
//                                                     NSError *error) {
//    if (error) {
//      RTCLogError("Error retrieving TURN servers: %@",
//                  error.localizedDescription);
//    }
//    ARDAppClient *strongSelf = weakSelf;
//    [strongSelf.iceServers addObjectsFromArray:turnServers];
//    strongSelf.isTurnComplete = YES;
//    [strongSelf startSignalingIfReady];
//  }];
    NSArray *urls = @[@"stun:stun.xten.com"];
    RTCIceServer *iceServer = [[RTCIceServer alloc] initWithURLStrings:urls];
    [_iceServers addObject:iceServer];
    _isTurnComplete = YES;

相关文章

网友评论

      本文标题:WebRTC iOS 下载编译

      本文链接:https://www.haomeiwen.com/subject/tzzqjxtx.html