以下步骤需要在墙外(vpn的速度不要太慢):
一、下载代码
1. 下载depot_tools
$ svn co http://src.chromium.org/svn/trunk/tools/depot_tools
2. 打开source .bash_profile 添加depot_tools路径到系统目录 export PATH=$PATH:/Users/mac/depot_tools
3.
$ cd /Users/mac/depot_tools $ gclient config http://webrtc.googlecode.com/svn/trunk
4.
$ gclient sync --force
在这一步block了很久,遇到了以下错误:
Error: Command download_from_google_storage --directory --recursive --num_threads=10 --no_auth --bucket chromium-webrtc-resources trunk/resources returned non-zero exit status 1 in /Users/xxx/work/webrtc/depot_tools Hook 'download_from_google_storage --directory --recursive --num_threads=10 --no_auth --bucket chromium-webrtc-resources trunk/resources' took 20.05 secs
最后在google code下找到了解决的办法:
(https://code.google.com/p/webrtc/issues/detail?id=2811)
找到 trunk/DEPS 下的这几行代码并把它注释掉
{
# Download test resources, i.e. video and audio files from Google Storage.
"pattern": "\\.sha1",
"action": ["download_from_google_storage",
"--directory",
"--recursive",
"--num_threads=10",
"--no_auth",
"--bucket", "chromium-webrtc-resources",
Var("root_dir") + "/resources"],
},
5. $gclient runhooks --force
6. 进入 trunk目录,打开all.xcodeproj/
二、编译源码:
根据 trunk/talk/app/webrtc/objc/README 说明,编译源码。
1.找到WebRTC目录下.gclient 文件的内容,添加 target_os = ['ios', 'mac']
2. 在.gclient下添加后,在终端WebRTC路径下,重新执行:
gclient sync
3.1. 编译为MAC版本
进入trunk路径,执行如下命令
export GYP_DEFINES="build_with_libjingle=1 build_with_chromium=0 libjingle_objc=1" export GYP_GENERATORS="xcode"
最后找到trunk路径下的all.xcodeproj,用xcode打开就可以了。
3.2. 编译为iOS模拟器版本
export GYP_DEFINES="$GYP_DEFINES OS=ios target_arch=ia32" export GYP_GENERATOR_FLAGS="$GYP_GENERATOR_FLAGS output_dir=out_sim" export GYP_CROSSCOMPILE=1 gclient runhooks ninja -C out_sim/Debug iossim AppRTCDemo
执行了这些后,会在trunk/out_sim/Debug 路径下会产生一个文件 AppRTCDemo.app
执行下列命令即可启动demo
./out_sim/Debug/iossim out_sim/Debug/AppRTCDemo.app
执行 gclient runhooks 遇到这个错误:
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/
在文件 : trunk/tools/gyp/pylib/gyp/xcode_emulation.py and at lines 832-833 comment the following line :
#assert identity not in cache or fingerprint == cache[identity], (
#”Multiple codesigning fingerprints for identity: %s” % identity)
解决问题。
3.3 编译为iOS真机版本
a. 安装homebrew
http://chriszeng87.iteye.com/blog/2077674
b.
brew install ideviceinstaller --HEAD
(时间较长)
c.
touch makeall-iosdevice.sh chmod +x makeall-iosdevice.sh
把以下内容复制到你刚刚创建的文件中
function fetch() {
echo "-- fetching webrtc"
gclient config http://webrtc.googlecode.com/svn/trunk/
echo "target_os = ['mac']" >> .gclient
gclient sync
sed -i "" '$d' .gclient
echo "target_os = ['ios', 'mac']" >> .gclient
gclient sync
echo "-- webrtc has been sucessfully fetched"
}
function wrbase() {
export GYP_DEFINES="build_with_libjinglth_chromium=0 libjingle_objc=1"
export GYP_GENERATORS="ninja"
}
function wrios() {
wrbase
export GYP_DEFINES="$GYP_DEFINES OS=ios target_arch=armv7"
export GYP_GENERATOR_FLAGS="$GYP_GENERATOR_FLAGS output_dir=out_ios"
export GYP_CROSSCOMPILE=1
}
function wrmac() {
wrbase
export GYP_DEFINES="$GYP_DEFINES OS=mac target_arch=x64"
export GYP_GENERATOR_FLAGS="$GYP_GENERATOR_FLAGS output_dir=out_mac"
}
function buildios() {
echo "-- building webrtc ios"
pushd trunk
wrios && gclient runhooks && ninja -C out_ios/Debug-iphoneos AppRTCDemo
popd
echo "-- webrtc has been sucessfully built"
}
function launch() {
echo "-- launching on device"
ideviceinstaller -i trunk/out_ios/Debug-iphoneos/AppRTCDemo.app
echo "-- launch complete"
}
function fail() {
echo "*** webrtc build failed"
exit 1
}
#fetch || fail
wrios || fail
buildios || fail
launch || fail
最后
./makeall-iosdevice.sh
大功告成。
以上参考了:
1. http://www.cnblogs.com/leehongee/p/3383266.html
2. http://blog.youkuaiyun.com/qs_csu/article/details/17416003
3. http://ninjanetic.com/how-to-get-started-with-webrtc-and-ios-without-wasting-10-hours-of-your-life/
本文详细介绍了在Mac系统上使用Vim编辑器编译WebRTC源码,并通过Xcode运行iOS模拟器和真机版本的示例应用,解决了编译过程中的常见问题。
1032

被折叠的 条评论
为什么被折叠?



