WebRTC@第三章@编译Android版@V1.0.0



驾驭开源库WebRTC

第三章-编译Android

作者:adam 鸣谢:老张、aaalaniz

日期:2015-4-6

版本:1.0.0

欢迎转载,有问题反馈Q2780113541,尽量完善系列教程。

depot_tools代理设置参考老张《史上最牛逼的墙内下载webrtc代码说明_20150401

编译定制参考aaalaniz的脚本:

https://github.com/pristineio/webrtc-build-scripts/blob/master/android/build.sh

0、官方源码svn2015-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.sh https://src.chromium.org/svn/trunk/src/build/install-build-deps-android.sh

curl -o install-build-deps.sh https://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下载完成,最好没报错。

报错说明网络或上边代理设置存在问题,排除问题然后执行如下命令:

下载代码:

gitpullgitfetch

下载依赖项生成编译文件:

gclientsync

 

6、设置android的环境变量,ninja编译

sourcesrc/build/android/envsetup.sh

Debug版本:ninja -C out/Debug

Release版本:ninja -C out/Release

如果没出过错,一次就编译成了,如果出错请检查前边那些设置有问题并重复gclient sync

确保下载完整,重新编译。

编译好的库和demosrc\out下面。

 

---------------------------进阶-----------------------------------

1、代码和依赖项更新

cd /root/webrtc_android

exportPATH=$PATH:/root/depot_tools

exportGYP_DEFINES="$GYP_DEFINES OS=android"

同步下载源码:

gitpullgitfetch

同步下载依赖项并根据GYP_GENERATORS的设置生成编译文件:

gclientsync

只同步下载依赖项不生成编译文件:

gclientsync --nohooks

只根据GYP_GENERATORS的设置生成编译文件:

gclientrunhooks

 

2VPS编译打包下载

如果使用的是UbuntuVPS编译,整个WEBRTC是可以打包下来用的,解压时注意选项,不要使连接符号失效。

先备份src下的out目录,然后编译测试通过后,生成的out目录会很大。

删掉out,用备份的out替换,打包(推荐7z),这样你就有份完整的原始包了

Ubuntu自带lighthttp服务,包放到/var/www,用支持续传的工具下载下来。

下不来就是网站有类型过滤,改个后缀为jpg就可以了。

3、定制编译

如下命令默认armv7a架构下的所有库和demo都编译

ninja-C out/Debug

实际上所有android架构都支持,比如arm64ia32 x86x64

比如我只想编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

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。