基于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 其他问题
编译过程有可能遇到其他问题,可以参考如下文档来解决。
- 基于WebRTC M53 的Android库编译流程
- WebRTC源码下载及编译流程(webrtc和webrtc-android)
- WebRTC下载编译流程
- 编译android平台上的webrtc-chromium
- Webrtc入门——基于阿里云ubuntu 最新webrtc Android平台编译详细说明
- 编译webrtc for android库与apk
- webrtc-android编译
- webRtc android 编译
- android平台webrtc编译
- webrtc android 编译
- webrtc android编译
- baseRTC: 提取编译webRTC的base库
- webrtc的编译
- Android平台上基于HTML5+WebRTC的视频会议系统
- Android平台上基于HTML5+WebRTC的视频会议系统
- 基于webrtc的android和windows音视频通讯
- 基于WebRTC的Android数字楼宇对讲系统回声消除
- 基于WebRTC的Android数字楼宇对讲系统回声消除
- php复选框生成数组与mysql的交互问题
- OpenLayers3加载离线百度地图(百度迁徙底图)
- 计算机1
- 【服务器】nginx二级域名配置
- 用博弈的思想看世界
- 基于WebRTC M53 的Android库编译流程
- 计算机2
- PHP PSR-3 日志接口规范
- c3&h5权威指南(1)
- 个人记录-LeetCode 58. Length of Last Word
- Linux系统启动过程
- 4种自动化测试模型
- Oracle数据库连接Eclipse的实例(解释为什么有时候明明在数据库里插入了数据却读不出来)
- 【ife】任务十九:基础JavaScript练习(二)