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,重新執行編譯腳本。