基于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
确保git 版本 2.2.1+,python 版本 2.7+。
参考资料
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 webrtc3 下载源码
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; experimental2 使用 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 其他问题
编译过程有可能遇到其他问题,可以参考如下文档来解决。
相关文章推荐
- WebRTC源码下载及编译流程(webrtc和webrtc-android)
- Webrtc入门——基于阿里云ubuntu 最新webrtc Android平台编译详细说明
- android 编译流程
- android framework编译流程
- Android Gingerbread基于32 bit Ubuntu 10.10编译问题
- 基于2.6.29内核的x86平台Android编译过程
- [整]基于ubuntu 10.04(32位机)的Android2.2 源码编译
- Android 技术专题系列之三 -- 编译(build) 流程
- ubuntu 下基于源码的android平台搭建与内核编译
- Android基于distcc的分布式编译及负载均衡的实现
- Android 技术专题系列之三 -- 编译(build) 流程
- 基于人人网的Android开发流程介绍
- s5pv210开发板上android编译脚本分析--[基于x210开发板]
- 基于32bit系统编译Android 2.3
- 基于Android Bionic 库动态编译busybox
- 基于32bit系统编译Android 2.3
- Android编译流程_makefile流程