驾驭开源库WebRTC
第三章-编译Android版
作者:adam鸣谢:老张、aaalaniz
日期:2015-4-6
版本:1.0.0
欢迎转载,有问题反馈Q:2780113541,尽量完善系列教程。更新地址:https://github.com/wpc320/webrtc_doc.git
depot_tools代理设置参考老张《史上最牛逼的墙内下载webrtc代码说明_20150401》
编译定制参考aaalaniz的脚本:
https://github.com/pristineio/webrtc-build-scripts/blob/master/android/build.sh
0、官方源码svn自2015-3-24已迁至谷歌git
一些使用svn地址的教程已不适用或需改进
1、部署http(s)转sock5代理,具体参考第一章
Shadowsocks:代理地址 127.0.0.1:1080
Privoxy:代理地址 127.0.0.1:8118
2、编译环境准备
Ubuntu14.04x64主机或虚拟机一台,root帐户登陆,其他账户命令请加sudo
本教程以/root作为工作区,保证剩余空间30G以上,下来的总大小可能十几G。
3、下载依赖库
终端输入,下面非黑色同色为一行:
cd/root
apt-get -y install wget git gnupg flex bison gperf build-essentialzip curl subversion pkg-config clang libgtk2.0-dev
curl -o install-build-deps-android.shhttps://src.chromium.org/svn/trunk/src/build/install-build-deps-android.sh
curl -o install-build-deps.shhttps://src.chromium.org/svn/trunk/src/build/install-build-deps.sh
chmod 777 *.sh
sudo /bin/bash ./install-build-deps-android.sh
4、下载工具准备
cd /root
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
5、设置下载工具路径至环境变量
echo'export PATH=/root/depot_tools/:$PATH' >> ~/.bash_profile
source~/.bash_profile
6、下载工具代理设置以及下载webrtc
vi /root/depot_tools/http_proxy.boto,内容如下:
[Boto]
proxy= 127.0.0.1
proxy_port= 8118
cd/root
mkdirwebrtc_android
cdwebrtc_android
设置下载工具代理环境变量:
exporthttp_proxy=http://127.0.0.1:8118
exporthttps_proxy=http://127.0.0.1:8118
设置下载工具git代理:
gitconfig --global http.proxy http://127.0.0.1:8118
或修改配置文件 %user_home%\.gitconfig [对特定仓库的话就是.git/config],增加:
[http]
proxy= http://127.0.0.1:8118
设置BOTO代理,解决download google storage失败问题:
exportNO_AUTH_BOTO_CONFIG=/root/depot_tools/http_proxy.boto
exportGYP_DEFINES="$GYP_DEFINES OS=android"
首次下载输入下载命令:
fetchwebrtc_android
等待十几G下载完成,最好没报错。
报错说明网络或上边代理设置存在问题,排除问题然后执行如下命令:
下载代码:
gitpull或gitfetch
下载依赖项生成编译文件:
gclientsync
6、设置android的环境变量,ninja编译
sourcesrc/build/android/envsetup.sh
Debug版本:ninja -C out/Debug
Release版本:ninja -C out/Release
如果没出过错,一次就编译成了,如果出错请检查前边那些设置有问题并重复gclient sync
确保下载完整,重新编译。
编译好的库和demo在src\out下面。
---------------------------进阶-----------------------------------
1、代码和依赖项更新
cd /root/webrtc_android
exportPATH=$PATH:/root/depot_tools
exportGYP_DEFINES="$GYP_DEFINES OS=android"
同步下载源码:
gitpull或gitfetch
同步下载依赖项并根据GYP_GENERATORS的设置生成编译文件:
gclientsync
只同步下载依赖项不生成编译文件:
gclientsync --nohooks
只根据GYP_GENERATORS的设置生成编译文件:
gclientrunhooks
2、VPS编译打包下载
如果使用的是Ubuntu版VPS编译,整个WEBRTC是可以打包下来用的,解压时注意选项,不要使连接符号失效。
先备份src下的out目录,然后编译测试通过后,生成的out目录会很大。
删掉out,用备份的out替换,打包(推荐7z),这样你就有份完整的原始包了
Ubuntu自带lighthttp服务,包放到/var/www,用支持续传的工具下载下来。
下不来就是网站有类型过滤,改个后缀为jpg就可以了。
3、定制编译
如下命令默认armv7a架构下的所有库和demo都编译
ninja-C out/Debug
实际上所有android架构都支持,比如arm64、ia32、x86、x64等
比如我只想编arm64下的WebRTCDemo:
cd/root/webrtc_android
sourcesrc/build/android/envsetup.sh
exportGYP_GENERATORS="ninja"
exportGYP_DEFINES="$GYP_DEFINES OS=android target_arch=arm64target_subarch=arm64"
exportGYP_GENERATOR_FLAGS="output_dir=out_android_arm64-v8a"
exportGYP_CROSSCOMPILE=1
gclientrunhooks
ninja-C out_android_arm64-v8a/Debug WebRTCDemo
参考:
http://www.webrtc.org/native-code/development
https://github.com/pristineio/webrtc-build-scripts/blob/master/android/build.sh