本文简单介绍如何在Ubuntu18.04 上,编译WebRTC Android版本。

安装工具

  需要用到depot_tools工具来下载webrtc源码。

安装 depot_tools

  git 命令获取 depot_tools。

# git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

  配置坏境变量:

# echo "export PATH=$PWD/depot_tools:$PATH" > $HOME/.bash_profile
# source $HOME/.bash_profile

  检测配置是否成功:

$ echo $PATH

下载源码

默认master分支

  默认是下载当前最新的源码,即Master分支。

# mkdir webrtc
# cd webrtc
# fetch --nohooks webrtc_android
# gclient sync

特定分支

  如果要编译特定分支,如M74分支,需指定特定分支进行同步。拉取M74分支使用如下命令:(分支提交记录可参考WebRTC分支提交记录

gclient sync -r cc1b32545db7823b85f5a83a92ed5f85970492c9  --force
# commit id 可通过切换到该分支,查看git log,最上面那条记录即为当前分支最新的提交记录

编译

安装编译依赖

  官网只给出第一条,建议两条命令都执行。

# ./src/build/install-build-deps.sh
# ./src/build/install-build-deps-android.sh

编译

 编译可指定带或不带AppRTCMobile,带AppRTCMobile生成的Debug目录较小,不带AppRTCMobile生成的文件较多,也更大。

# source build/android/envsetup.sh
# gn gen out/Debug --args='target_os="android" target_cpu="arm64"'
# ninja -C out/Debug AppRTCMobile

  编译过程中,如果没有出错,即表示编译成功。

编译组合

a)编译arm debug版本

gn gen out/Debug_arm --args='target_os="android" target_cpu="arm"'
    ninja -C out/Debug_arm

b)编译arm64 debug版本

gn gen out/Debug_arm64 --args='target_os="android" target_cpu="arm64"'
    ninja -C out/Debug_arm64

c)编译arm release版本

gn gen out/Release_arm --args='target_os="android" target_cpu="arm" is_debug=false'
    ninja -C out/Release_arm

d)编译arm64 release版本

gn gen out/Release_arm64 --args='target_os="android" target_cpu="arm64" is_debug=false'
    ninja -C out/Release_arm64

此处在生成的out/*名字上做区别,需要自取。

参考

  编译Android版的WebRTC
    https://blog.csdn.net/ericbar/article/details/83114015
  WebRTC iOS&OSX 库的编译
    http://www.enkichen.com/2017/05/12/webrtc-ios-build/

WebRTC Android版本编译的更多相关文章

  1. 编译 Android 版本的 Opus 音频编解码库的方法

    Opus 音频编解码库是 Speex 音频编解码库的下一代版本,从编解码性能以及质量上来讲都有了长足的进步.Opus 的编译非常简单,但是官方并未给出详细的 Android 版本编译指南,查找了大量资 ...

  2. windows下编译Android版本的boost库文件

    1.起因: 手上有一个用到了boost的asio库和thread库的工程要编译到手机上(Android版本和ios版本),本文只介绍如何编译到Android版本,ios版本之后再介绍,也许就不介绍了( ...

  3. Android Studio xcode单步调试 WebRTC Android & iOS

    mac环境 如何在 Android Studio 里单步调试 WebRTC Android 的 native 代码. WebRTC 代码下载 depot tools 是 chromium 代码库管理工 ...

  4. 加密通信软件Signal 2.92版本编译安装折腾手记(Ubuntu 18.04)

    加密通信软件Signal 2.92版本编译安装折腾手记(Ubuntu 18.04) 前言 加密通信软件Signal是开源的,安全性很高,号称斯诺登也推荐大家使用.既然这么好,那必然会有不少人去尝试复制 ...

  5. Delphi XE5 支持的Android 版本

    Delphi XE5 已经支持Android应用开发.  那XE5支持Android的哪些版本呢?Delphi编译的APP能部署到Gingerbread (2.3.3-2.3.7), Ice Crea ...

  6. Mac下设置Android源代码编译环境

    在Mac下编译Android最麻烦的就是设置Android的编译环境了,做完这一步基本上剩下的就是近乎傻瓜式的操作了.说起来也简单就三步,设置大小写敏感的文件系统.安装编译工具.设置文件系统同时能打开 ...

  7. Android反编译(二)之反编译XML资源文件

    Android反编译(二) 之反编译XML资源文件 [目录] 1.工具 2.反编译步骤 3.重新编译APK 4.实例 5.装X技巧 6.学习总结 1.工具 1).反编译工具  apktool http ...

  8. [Android] 如何查看apk需要支持的Android版本

    reference to : http://blog.csdn.net/huiguixian/article/details/39928089 如果有一个apk,需要知道他最低安装支持的Android ...

  9. eclipse 和 android studio 编译时报 Unsupported major.minor version 52.0错解决办法

    version 52.0 是java8的环境.当gradle tools 升级到2.2.1时候,可能编译时候会报该错误. 很多网友说更改java version,但是很多时候无效.下面是我遇到时候的解 ...

随机推荐

  1. 交互程序 Scanner类

    交互程序 1. Scanner类是标准Java类库的类 (1)提供一些方法用于交互式读入不同类型的输入数据,输入可以是不同的数据源,包括用户键入的数据和保存在文件中的数据(怎么弄). (2)将一个字符 ...

  2. 重磅!普惠AI--华为云语音语义万次调用1元购,有奖问答@评论区等你来!【华为云技术分享】

    活动快速入口:https://activity.huaweicloud.com/language_speech_promotion0.html 语音交互与自然语言处理 语音交互是一种人机交互方式,以开 ...

  3. Flask使用bootstrap为HttpServer添加上传文件功能

    关于模态框 使用bootstrap实现点击按钮弹出窗口,简直不要太简单.我们只需要将写好的窗口内容隐藏,然后调用bootstrap的框架即可,简单几行就能完成相关功能实现.... 前提条件是,我们需要 ...

  4. ef6+mysql的bug

    entityFramework6在mysql数据库下,用linq进行排序会出现一个bug. Expression<Func<blog, bool>> expr_filter=p ...

  5. Oracle基本的增删改查语句--本人使用scott用户中的表

    --感觉有用点个赞^v^ 1 --创建表空间 create tablespace mykebai datafile 'c:\mykebai.dbf' --数据问价存放位置 size 100m --数据 ...

  6. JNI用法小例子

    一.准备包含本地方法的.java文件(ContentVideo.java),包括set()和get()两个方法. public class ContentVideo { public native s ...

  7. luogu CF16E Fish

    题目描述 有n条鱼,编号从1到n,住在湖里.每天有一对鱼相遇, 彼此相遇的概率是一样的.如果两条标号为i和j的鱼见面,第一只吃了第二只的概率为a{i,j},第二只会吃了第一只的概率为a{j,i}=1- ...

  8. go基础之不定参函数

    指定类型参数 任意类型参数的变参 go语言同其他编程一样也提供了对变参函数的支持.本文简单讲解一下go中变参函数的使用方法. 指定类型参数 不定参数是指函数传入参数的个数为不确定数量,个数需要在调用的 ...

  9. Spring源码学习笔记之基于ClassPathXmlApplicationContext进行bean标签解析

    bean 标签在spring的配置文件中, 是非常重要的一个标签, 即便现在boot项目比较流行, 但是还是有必要理解bean标签的解析流程,有助于我们进行 基于注解配置, 也知道各个标签的作用,以及 ...

  10. HDU-6115

    我们将A省简化为由N个城市组成,某些城市之间存在双向道路,而且A省的交通有一个特点就是任意两个城市之间都能通过道路相互到达,且在不重复经过城市的情况下任意两个城市之间的到达方案都是唯一的.聪明的你一定 ...