基于WebRTC M53 的Android库编译流程

来源:互联网 发布:centos 集成环境 编辑:程序博客网 时间:2024/06/05 15:15

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 gitapt-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

将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 webrtccd webrtc

3 下载源码

fetch --nohooks webrtc_androidgclient sync

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

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

编译源码

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

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

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

//pwd 查看当前目录//../webrtc/srccd 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/x64symbol_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 = trueis_clang = truesymbol_level = 1  # Faster build with fewer symbols. -g1 rather than -g2enable_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 其他问题

编译过程有可能遇到其他问题,可以参考如下文档来解决。

0 0
原创粉丝点击