您的位置:首页 > 移动开发 > Android开发

基于WebRTC M53 的Android库编译流程

2016-12-27 21:51 330 查看
WebRTC编译流程

参考资料

webrtc.org网站说明

Native开发帮助

webrtc groups

编译环境

系统:ubuntu 15.10(官方建议在linux环境下进行编译操作)

JDK:1.8.0_91

Git version:2.5.0

Python version:2.7.10

WebRTC 源码版本:M53

目标平台:Android

准备编译环境

1 安装 git,python

sudo apt-get install git
apt-get install python


确保git 版本 2.2.1+,python 版本 2.7+。

2 安装 OpenJDK

本地java version “1.8.0_91”

3 安装 depot_tools

新建文件夹,执行如下命令,clone 到本地仓库。

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git[/code] 
将depot_tools 添加到环境变量中。

export PATH=`pwd`/depot_tools:"$PATH"


或者在/etc文件夹下修改profile文件,添加如下语句:

export PATH=$PATH:/data/software/depot_tools


下载 WebRTC 源码

1 配置编译平台

export GYP_DEFINES="OS=android"


2 创建工作文件夹

本地文件夹
<用户目录>/webrtc/


cd /<用户目录>
sudo mkdir webrtc
cd webrtc


3 下载源码

fetch --nohooks webrtc_android
gclient sync


这一步可能耗费很长时间,不要打断下载过程,否则有可能需要重新下载

下载完成后,在
webrtc/
文件夹下会有一个
src/
目录,里面包含了所有 webrtc 的代码以及 chrome 代码。

编译源码

1 使用GN工具生成配置编译参数

Google 之前使用 GYP 工具进行 Android 库的编译,目前使用 GN 工具来进行编译,而且不久之后只支持 GN 工具进行编译。

在执行这一步的时候,要确保在src/文件夹下。

//pwd 查看当前目录
//../webrtc/src
cd src


官网帮助文档的参数配置

gn gen out/Default --args='target_os="android" target_cpu="arm"'


使用以上参数进行配置会导致编译失败,本地的编译参数配置如下:

gn gen out/Default-release
--args='is_debug=false //关闭调试
dcheck_always_on=true
is_component_build=false
target_os="android"
target_cpu="arm" //指定目标cpu平台 其他可选参数:arm64/x86/x64
symbol_level=1'


以上参数可以在命令后通过
--args='...'
的方式添加,同样也可以在执行
gn gen out/Default-release
后,

修改
Default-release/
文件夹的
args.gn
文件中配置。

其他可配置项,参数的详细信息参考

target_os = "android"
target_cpu = "arm"  # (default)
is_debug = true  # (default)

# Other args you may want to set:
is_component_build = true
is_clang = true
symbol_level = 1  # Faster build with fewer symbols. -g1 rather than -g2
enable_incremental_javac = true  # Much faster; experimental


2 使用 ninja 工具进行编译

ninja -C out/Default


Default文件夹是自定义的编译结果输出位置,可以自己命名,本地的编译输出位置为out/Default-release。

等待编译完成,即可在
webrtc/src/out/Default-release
目录下找到编译输出的文件,其中我们需要用到的是: libjingle_peerconnection_so.so 文件,以及
lib.java/webrtc/api
目录下的 libjingle_peerconnection_java.jar 文件。

编译过程中遇到的问题

1 安卓库缺少类

成功编译webrtc源码后,将以上两个文件导入安卓工程中,发现运行时缺少三个类。

此时我们在
/webrtc/src/webrtc/api/android/java/src/org/webrtc
目录下找到
BUILD.gn
文件,此文件为编译安卓 libjingle_peerconnection_java.jar 文件的配置文件。

找到文件中的

android_library("libjingle_peerconnection_java") {
//...
}


在其中添加缺少的类

java_files = [
"../base/java/src/org/webrtc/Logging.java",
"../base/java/src/org/webrtc/Size.java",
"../base/java/src/org/webrtc/ThreadUtils.java",
//...
]


然后重新进行编译。

2 其他问题

编译过程有可能遇到其他问题,可以参考如下文档来解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android webrtc 编译