折腾了好多天,终于将webrtc Android平台的demo编译出来了,发现即使完全按照webrtc官网的编译指南,还是会碰到各种问题。而网上又没有更全面的说明,最后是通过查看webrtc 批处理脚本才最终一步步解决问题。写下这篇文章,希望对大家有帮助。

在编译的过程中,感觉webrtc编译实在是太难了, 但是完成了编译之后,感觉webrtc编译其实是很简单的,造成这个强烈反差的主要原因是,google工程师将几乎所有编译过程中需要使用的软件、依赖配置、环境变量,都已经写成了脚本,你只要运行就可以了。什么JDK、SDK安装、配置、环境变量设置统统不需要,怎样,简单吧,运行几个命令就搞定了!!等等,别高兴太早,我前面说的是几乎,不是全部,比如在命令行条件下用url下载资源的curl及其依赖的一票软件,人家google认为是基础软件,不需要给你安装,但是万一你没有安装呢,那就在下载源码失败的地方慢慢找原因吧!!另外,批处理也有坏处,中间某个环节出问题了就会终止(因为你系统或者网络的原因),但是也许你没注意,认为执行结束了,那就会在编译环节遇到各种各样的问题,这些问题连万能的google可能都没有任何答案。当然,如果你的网络连接美帝很慢,那就更惨了。

好了,言归正传,编译之前请大家准备好环境:

1.阿里云Ubuntu 14.04 64bit  1核4G内存,选择美国的网络,按流量收费,100M网络:

美国的网络你懂的,4G内存是webrtc编译最低要求

2.提前执行apt-get update,确保源同步过程不出现错误

3. 添加新账户,并设置管理员权限

webrtc在源码下载的过程中会识别是否root用户,如果是root用户会提醒错误。但是你不去理会似乎也能正常往下走,不过我为了保险还是使用了新账户。

sudo adduser xxx(你的用户名)
sudo vi /etc/sudoers
找到“root ALL=(ALL) ALL”,在下面加一条:
# User privilege specification
root ALL=(ALL) ALL
xxx  ALL=(ALL) ALL重启linux系统

4.安装阿里云未默认安装的软件(但webrtc认为你默认就有的环境)

sudo apt-get install  git  apache2 curl libcurl3 libcurl3-dev php5-curl
//重启Apachesudo /etc/init.d/apache2 restart

    准备条件基本具备了,接下来就开始真正webrtc源码下载和编译了,其实就是按照google官网的指导 https://webrtc.org/native-code/android/ ,只是对其中容易搞错的地方做了重点说明。

1.下载源码

选择一个目录,我是选择当前账户的根目录( home/xxx(你的用户名) )//下载depot-tools
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
//设置环境变量
export PATH=`pwd`/depot_tools:"$PATH"//选择Android为目标
export GYP_DEFINES="OS=android"//选择版本分支
fetch --nohooks webrtc_android//开始下载源码
gclient sync

执行gclient sync开始下代码后,不会一番风顺:

1)首先会一直停留在“still on src”这样一个提示上,可能需要40分钟以上,不要着急,这是正常现象。

下列现象去年的版本会出现,但是17年9月的版本已经不会出现了,如果出现,可以按照下列方式操作

2)在源码下载过程中会有一个Android SDK 软件许可的提示,但是显示不全,所以无法进行y/n选择, 没关系,你按回车键先让它继续往后走。如果你仔细看,回车后会有提示,大概意识是 google play severice 不是最新的,要你手动执行“src/build/android/play_services/update.py download”更新,你先不管

3)因为google play severice 不是最新的,下载到一大半会出错,这个时候你执行 src/build/android/play_services/update.py download ,然后再执行gclient sync就能正常下载完了。

2.编译apk

安装JDK8
$ sudo apt-get install python-software-properties  software-properties-common
$ sudo add-apt-repository ppa:openjdk-r/ppa
$ sudo apt-get update
$ sudo apt-get install openjdk-8-jre openjdk-8-jdk将默认JDK环境切换到JDK8
sudo update-alternatives --config java
sudo update-alternatives --config javac
sudo update-alternatives --config javaws
sudo update-alternatives --config javap
sudo update-alternatives --config jar sudo update-alternatives --config jarsigner
/*安装编译依赖软件和环境,这个过程会安装linux的基础环境和Android的基础环境*/
src/build/install-build-deps-android.sh /*设置各种环境变量*/
/*进入src目录,执行*/
. build/android/envsetup.sh
gn gen out/Debug --args='target_os="android" target_cpu="arm"'

You can specify a directory of your own choice instead of out/Debug, to enable managing multiple configurations in parallel.

  • To build for ARM64: use target_cpu="arm64"
  • To build for 32-bit x86: use target_cpu="x86"
  • To build for 64-bit x64: use target_cpu="x64"
ninja -C out/Debug
***************************************老版本编译方法**************************************
/*进入src目录,执行*/
. build/android/envsetup.sh
export GYP_DEFINES="OS=android $GYP_DEFINES"export GYP_GENERATOR_FLAGS="$GYP_GENERATOR_FLAGS output_dir=out_android"gclient runhooksninja -C out/Debug AppRTCDemo

如果之前的操作步骤正确,编译这一步是不会出什么问题的,顺利编译通过。在src/out/Debug/apks/目录下能找到AppRTCDemo.apk

好了,编译结束了

Webrtc入门——基于阿里云ubuntu 最新webrtc Android平台编译详细说明相关推荐

  1. 基于阿里云天池的飞猪平台用户行为分析——MySQL

    前言 本文是基于阿里云天池的飞猪平台用户行为分析,使用MySQL和Excel做数据分析,对输出结果使用Excel和PowerBI进行数据可视化. 一.数据分析步骤 明确问题.理解数据.数据清洗.数据分 ...

  2. 基于阿里云Ubuntu搭建SVN版本控制

    目录 前言 步骤1:检查是否已经安装SVN 步骤2:正式安装SVN 步骤3:创建项目版本库 步骤4:更改配置 步骤5:启动SVN服务 步骤6:远程访问 SVN 拉代码 步骤7:开机自动启动SVN服务 ...

  3. 基于阿里云HiTSDB搭建工业物联网平台实践

    摘要: 基于阿里云全面的物联网.云计算与大数据技术搭建云端的企业能源管理物联网平台实现能耗数据采集.统计分析.平衡调度.节能优化等全面的能源管控协同平台.是企业生产运行保障的利器,也是大量企业实现云上 ...

  4. 阿里云上搭建webRTC 服务器——Licode

    阿里云上搭建webRTC 服务器--Licode 系统配置 阿里云服务器 Ubuntu 14.04.5 LTS Docker 环境搭建 在一台空的机器上搭建docker环境,先要安装docker,执行 ...

  5. 基于阿里云ECS,Ubuntu系统搭建离线下载服务器

    基于阿里云ECS,Ubuntu系统搭建离线下载服务器 很开心能参加本次阿里云训练营,使用的ECS是阿里云,ubuntu系统 1.了解什么是CCAA CCAA 是服务器离线下载解决⽅案包,组件包含了Ar ...

  6. 基于阿里云的OSS上传从简单实现 到项目业务应用(一)入门了解篇

    使用阿里云OSS 功能的准备工作 环境准备 环境要求 使用Java 1.8及以上版本. 查看版本 执行命令java -version查看Java版本. 安装方法一: 如果使用Maven 安装阿里云OS ...

  7. 阿里云服务器最新优惠价格及最新收费标准(2023更新)

    阿里云服务器收费标准分为包年包月和按量付费两种模式,包年包月是一种先付费后使用的计费方式,按量付费是一种先使用后付费的计费方式.选择包年包月的收费模式,用户可以提前预留资源,同时享受更大的价格优惠,帮 ...

  8. 阿里云 nginx php mysql_阿里云 Ubuntu + Nginx + PHP + MySQL

    最近在阿里云上配置服务器,踩了不少坑,记录一下,希望能帮助到有同样需求的朋友们. 整个配置过程基本上是按照下面这篇帖子进行的,写的非常清楚,按照步骤一步一步来就行了.Installing Nginx, ...

  9. 基于阿里云物联网平台,我们这样实现简易出入监控

    本文通过一个简单实例,主要介绍了如何使用树莓派快速接入阿里云iot platform,并实现了一个简易的监控人员出入并拍照上送钉钉群的场景 场景 在公司大门入口处布点树莓派和红外感应,实现出入口人员出 ...

最新文章

  1. tensorflow入门教程和底层机制简单解说——本质就是图计算,自动寻找依赖,想想spark机制就明白了...
  2. 一个19岁美国少年眼中的各种社交应用
  3. 【语法】NSString
  4. 设计模式之模版方法模式demo
  5. 前端学习(3278):循环 遍历
  6. php关闭gd库,详解php开启gd库的两种方法
  7. 职称计算机承诺书,职称申报承诺书范本
  8. Python+matplotlib调用LaTex引擎渲染公式
  9. atitit.解决SyntaxError: missing ] after element list不个object 挡成个str eval ....
  10. Firebug 入门指南
  11. nc语法和nc木马远程控制主机
  12. 晶振负载电容是什么意思?关于晶振负载电容
  13. docker内存及cpu限制
  14. 骁龙865与鸿蒙900,天玑2000与骁龙865哪个好_天玑2000与骁龙865对比
  15. 分享几个实用的chatgpt网址
  16. cmd命令方式启动服务
  17. TCP标志位syn,ack,fin以及序列号(seq),响应号(ack)
  18. javascript设计模式-模块模式(module pattern)
  19. 服务端团队假期值班方案
  20. 红米1s android8.0,【红米1S(移动4G) 安卓4.4.2线刷包】MIUI V8.0.1.0.KHHCNDG稳定版 精简线刷包...

热门文章

  1. 将jar文件转换成exe可执行文件[转]
  2. CodeForces - 1551E Fixed Points(dp)
  3. 正整数 java_JAVA语言:正整数A+B(Java)PAT团体程序设计题解
  4. php获取访问浏览器,php获取访问者浏览器
  5. SPOJ8222(后缀自动机--出现次数最多的子串)
  6. POJ1228(稳定凸包问题)
  7. Rustup 管理工具
  8. C++虚继承(三) --- C++ 对象的内存布局(下)(陈皓)
  9. SQL SERVER中强制类型转换cast和convert的区别
  10. C++开发中的pImpl方法