当前位置 博文首页 > wojiaopanpan的博客:国内下载配置及编译WebRTC的过程
全程一个字——惨惨惨。。。
参考文章mac及ios下编译WebRTC
昨天晚上还写了一篇文章,记录如何搞定这个事情,完了,一大早文章就已经被删除了。
depot_tools是一套Google用来编译Chromium或者WebRTC的构建工具。下载googlesource代码的时候,可能因为https连接的关系,会提示chromium.googlesource.com之类的域名在.netrc文件中找不到,然后下载失败。这时候,按照在netrc文件中配置默认登录用户名和密码?来配置就行。最好下载前都配置好。
cd <dir>
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git ##下载代码
echo "export PATH=$PWD/depot_tools:$PATH" > $HOME/.bash_profile ##用来配置环境变量
source $HOME/.bash_profile ##使环境变量生效
echo $PATH #验证
需要下载的代码版本可以到Release Notes?中选定,进去的时候会看到一堆Notes,选定一个,然后去找类似"52b6562a10b495cf771d8388ee51990d56074059"这样的提交记录,copy这个commidId留作后用。
设置要编译的平台——创建工作路径——工作路径下载源码
export GYP_DEFINES="OS=ios target_arch=arm" ##编译ios32位真机
export GYP_DEFINES="OS=ios target_arch=arm64" ##编译ios64位真机
export GYP_DEFINES="OS=ios target_arch=ia32" ##编译ios32位模拟器
export GYP_DEFINES="OS=ios target_arch=x64" ##编译ios64位模拟器
export GYP_DEFINES="OS=mac target_arch=x64" ##编译mac版本
export GYP_DEFINES="OS=android" ##编译Android版本
export GYP_DEFINES="OS=linux" ##linux
mkdir webRTC
cd webRTC
fetch --nohooks webrtc_ios
gclient sync -r 52b6562a10b495cf771d8388ee51990d56074059 --force
以上是ios的源码下载,mac只需要修改export GYP_DEFINES="OS=mac"就行了
4.编译
ninja?是?WebRTC?的编译平台,iOS 版本我们可以使用自带的编译脚本,这样就不需要自己编译和安装?ninja,默认情况下,脚本会编译 3 个平台机型的库文件,以及一个各个平台的集合库,脚本也可以指定编译成?.a
?的库文件或者?.framework
,命令如下:
cd src/tools_webrtc/ios
./build_ios_libs.sh
【注意,通常来说,以及官方标准提示,Android代码只能在Linux上编译,不能在mac上编译】我这边在mac执行gclient sync的时候,也有一些问题。建议有Linux环境的小伙伴,还是妥妥用linux编译Android源码。当然也有少数用户通过修改ndk配置什么的,实现了mac上编译Android源码。
以下是Ubuntu安装编译步骤:
1.sudo apt-get update此步骤可能会出现"Failed to fetch http://security.ubuntu.com/ubuntu/dists/xenial-security..."之类的错误,此时应该修改Ubuntu source,在配置-Software&Updates-Ubuntu Software里面修改源服务器。因为我在翻墙,所以用国外的服务器比较好
? 安装一些基础软件,比如sudo apt-get install git apache2 curl libcurl3 libcurl3-dev php5-curl
2.安装depot_tools,配置环境变量.bashrc,跟mac上一样的;
3.创建webrtc工作路径,进入工作目录,执行以下命令【等待时间会很长,但不要着急】
export GYP_DEFINES= "OS=android"
fetch --nohooks webrtc_android
gclient sync
4.编译源码
? ?安装需要的软件及配置:src/build/install-build-deps-android.sh
? ?进入到src目录下进行环境变量配置:.build/android/envsetup.sh,这个环节有可能会提示“Error:...must be sourced”之类的,但由于这一步其实就是配置Android sdk环境变量,所以自己手动配置一下也可以。
? ?然后执行脚本
gn gen out/Android-debug --args='target_os="android" target_cpu="arm"'
ninja -C out/Android-debug ####注意修改执行路径和目标路径
这一步的ninja -C out/Android-debug这个,由于我自己另行安装了一个ninja,导致一直出现然后就死循环了
log: ninja version 0.1.3 initializing
log: magic group: gid=0 (root)
log: entering main loop
log: generating initial pid array..
log: now monitoring process activity
这时候应该是安装depot_tools的时候自带了一个ninja【版本较高】,然后自己再安装一个ninja,就会冲突了。
解决方法是:卸载自己安装的ninja,然后到depot_tools下执行那个脚本,记得目标路径要指定正确(我想设置一下ninja环境变量可能也行)
?