驾驭开源库WebRTC
第四章-编译Mac&iOS版
作者:adam
鸣谢:老张
日期:2015-4-6
版本:1.0.0
欢迎转载,有问题反馈Q:2780113541,尽量完善系列教程。
depot_tools代理设置参考老张《史上最牛逼的墙内下载webrtc代码说明_20150401》
0、官方源码svn自2015-3-24已迁至谷歌git
一些使用svn地址的教程已不适用或需改进
1、部署http(s)转sock5代理,具体参考第一章
Shadowsocks:代理地址
127.0.0.1:1080
Privoxy:代理地址
127.0.0.1:8118
2、编译环境准备
MacOS X 10.9.5主机或虚拟机一台,安装Xcode6
本人工作区为$HOME,保证剩余空间有10G以上
3、下载工具准备
cd$HOME
gitconfig --global http.proxy http://127.0.0.1:8118
gitconfig --global https.proxy https://127.0.0.1:8118
gitclone https://chromium.googlesource.com/chromium/tools/depot_tools.git
4、设置下载工具路径至环境变量
echo‘export PATH=$HOME/depot_tools/:$PATH‘ >> ~/.bash_profile
source~/.bash_profile
5、下载工具代理设置以及下载webrtc
vi$HOME/depot_tools/http_proxy.boto,内容如下:
[Boto]
proxy= 127.0.0.1
proxy_port= 8118
设置环境变量,如新开终端则需重新设置
exporthttp_proxy=http://127.0.0.1:8118
exporthttps_proxy=https://127.0.0.1:8118
gitconfig --global http.proxy http://127.0.0.1:8118
gitconfig --global https.proxy https://127.0.0.1:8118
exportPATH=$HOME/depot_tools/:$PATH
exportNO_AUTH_BOTO_CONFIG=$HOME/depot_tools/http_proxy.boto
mkdir$HOME/webrtc_ios
cd$HOME/webrtc_ios
exportGYP_DEFINES="OS=ios"
首次下载输入下载命令:
fetchwebrtc_ios
等待几个G下载完成,最好没报错。
报错说明网络或上边代理设置存在问题,排除问题然后执行如下命令:
下载代码:
gitpull或gitfetch
下载依赖项生成编译文件:
gclientsync
6、编译webrtc
以iOS平台示例,设置环境变量:
exportGYP_CROSSCOMPILE=1
exportGYP_DEFINES="OS=ios target_arch=arm arm_version=7"
exportGYP_GENERATOR_FLAGS="output_dir=out_ios"
exportGYP_GENERATORS=ninja
执行:
cd$HOME/webrtc_ios/src
webrtc/build/gyp_webrtc
等待工程文件生成完毕……
编译:
ninja-C out_ios/Debug-iphoneos
其他平台编译参考:http://www.webrtc.org/native-code/ios
---------------------------进阶-----------------------------------
1、代码和依赖项更新
cd$HOME/webrtc_ios
exportGYP_DEFINES="$GYP_DEFINES OS=ios"
同步下载源码:
gitpull或gitfetch
同步下载依赖项并根据GYP_GENERATORS的设置生成编译文件:
gclientsync
只同步下载依赖项不生成编译文件:
gclientsync --nohooks
只根据GYP_GENERATORS的设置生成编译文件:
gclientrunhooks
2、如果python库报错,更换python新版本
_bsddb啥的,那是因为mac自带的python库有问题
手动更新python,我用的是2.7.9
pkg,10.6+的系统可以装。
https://www.python.org/ftp/python/2.7.9/python-2.7.9-macosx10.6.pkg
安装好,然后执行
sudo rm /usr/bin/pydoc
sudo rm /usr/bin/python
sudo rm /usr/bin/pythonw
sudo rm /usr/bin/python-config
至此旧python连接符删除完毕
新开终端输入python,显示2.7.9即为OK,CTRL+D退出。
3、使用xcode编译
新版webrtc在OSX下使用Xcode调ninja来编译
新开终端,输入:
cd$HOME/webrtc_ios/src
export GYP_GENERATOR_FLAGS="xcode_project_version=3.2xcode_ninja_target_pattern=All_iOS xcode_ninja_executable_target_pattern=AppRTCDemo|libjingle_peerconnection_unittest|libjingle_peerconnection_objc_testoutput_dir=out_ios"
exportGYP_GENERATORS="ninja,xcode-ninja"
webrtc/build/gyp_webrtc
然后可以在src目录中找到all.ninja.xcodeproj打开编译即可。
另外src下还有另外两个工程,一个是作为索引sources_for_indexing.xcodeproj,一个是all.ninja.xcworkspace,xcode打开就有warning和error,以后再说吧,有知道解决办法的朋友可以告诉我。
更多设备请参考:
http://www.webrtc.org/native-code/ios