WebRTC(iOS)下载编译
1、下载编译环境:
硬件:iMac (21.5英寸,2013年末)
系统:OS X Yosemite 版本 10.10.5
准备好稳定的翻墙工具。
Mac 翻墙推荐:Lantern
打开Lantern,在终端输入export http_proxy=http://127.0.0.1:8787
export https_proxy=http://127.0.0.1:8787,现在终端就可以翻墙了。
这里填写的地址可能会有变化,具体见图:
2、安装git
http://www.cnblogs.com/ccdev/archive/2012/09/12/2682098.html
下载:http://code.google.com/p/git-osx-installer/
3、安装depot_tools
a 启动终端,当前路径为:/Users/xxx :
b git 命令获取depot_tools:
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
c 把depot_tools 设置到PATH中:echo "export PATH=$PWD/depot_tools:$PATH" > $HOME/.bash_profile
使PATH设置生效:source $HOME/.bash_profile
echo $PATH 查看设置是否生效。
4、获取WebRTC 源码
a 设置要编译的平台到环境变量中:
export GYP_DEFINES="OS=ios"
b 创建工作路径并执行下面的语句:
fetch --nohooks
webrtc_ios
gclient sync -r ec6b51d318f2cc747446089259495b161db11681
注意:ec6b51d318f2cc747446089259495b161db11681为版本号。获取版本号方式为:
a 进入webrtc官网;
b 上方About->Release Notes;
c 选择想要下载的版本,例如M48,进入如下页面
d 点击WebRTC M48 branch;
e 选择第一行,进入如下页面
现在即可见到版本号。
gclient sync -r ec6b51d318f2cc747446089259495b161db11681这一步需要等待很久,下载一共10多个g的代码,需要稳定的翻墙工具,我当时下载了一晚上加一上午。
5、编译库文件
编译这一步不推荐按照官网的方式编译(而且随着webrtc版本更新,官网也只有最新版本的编译方式,可能无法正确编译我们下载的版本)。
在我们下载的源代码中有一个编译脚本,还是以我们下载的版本为例,其位置在src/talk/build/build_ios_libs.sh。(后面一些新版本在src/webrtc/build/ios/build_ios_libs.sh)。
直接执行这个脚本就能编译出需要的库文件了。
以我们下载的版本为例,脚本之行后会在src/out_ios_libs下产生很多文件,src/out_ios_libs/fat下就是我们需要的库文件,可以直接将这些文件全部导入工程中。头文件路径:src/talk/app/webrtc/objc/public。
到这里我们已经可以使用了,但是我们发现fat下的文件太多而且占空间太大,我们可以执行下面两条命令来使我们的库变小:
libtool -static -v -o webrtc.a fat/*.a
strip -S -X webrtc.a
最终形成的webrtc.a库只有70多m。
6、开启H264编解码
src/webrtc/build/common.gypi修改use_objc_h264%值为1.
7、编译中遇到的错误
(一)多重证书的问题,AssertionError: Multiple codesigning fingerprints for identity: iPhone Developer
可参考 http://ninjanetic.com/how-to-get-started-with-webrtc-and-ios-without-wasting-10-hours-of-your-life/
大概步骤:
(1)用 security find-identity 找到你想要的identify;
(2)在 src/chromium/src/build/common.gypi 里有一个CODE_SIGN_IDENTITY,
把里面的 'CODE_SIGN_IDENTITY[sdk=iphoneos*]': 'iPhone Developer' 修改一下,
比如修改成 'CODE_SIGN_IDENTITY[sdk=iphoneos*]': 'iPhone Developer: 136165767@qq.com (462TTV8Q88)'
(3)重新执行编译脚本。
(二)iPhone SDK版本不正确,no such file or directory: ‘/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/usr/lib/libicucore.dylib’
老版webrtc编译需要的sdk比较老,而你的机器上安装的Xcode比较新;下载老版本Xcode,安装好并将名字改为Xcode,重新执行编译脚本。