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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Webrtc入门——基于阿里云ubuntu 最新webrtc Android平台编译详细说明相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

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

      一开始用Ubuntu 14.04在apt-get update的时候出现源同步错误,导致webrtc相关批处理运行中途异常停止,折腾了不少时间才发现是apt-get update的问题,但是试了很多方法都不行,最后用Ubuntu 12.04就没问题了。 

   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
//重启Apache

sudo /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分钟以上,不要着急,这是正常现象。

  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 

/*安装编译依赖软件和环境,这个过程会安装linux的基础环境和Android的基础环境,包括JDK 1.7版本*/
src/build/install-build-deps-android.sh 

/*如果你的系统中之前还安装了其他版本的jdk,需要使用以下命令将默认的环境切换到openJDK1.7*/
sudo update-alternatives --config javac
sudo update-alternatives --config java
sudo update-alternatives --config javaws
sudo update-alternatives --config javap
sudo update-alternatives --config jar
sudo update-alternatives --config jarsigner

/*设置各种环境变量*/
/*进入src目录,执行*/
. build/android/envsetup.sh
export GYP_DEFINES
="OS=android $GYP_DEFINES"

export GYP_GENERATOR_FLAGS="$GYP_GENERATOR_FLAGS output_dir=out_android"

gclient runhooks ninja -C out/Debug AppRTCDemo

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

好了,编译结束了

 

以上是关于Webrtc入门——基于阿里云ubuntu 最新webrtc Android平台编译详细说明的主要内容,如果未能解决你的问题,请参考以下文章

七牛云徐晶:基于 WebRTC 架构的直播课堂实践

2018年最新阿里云云主机安装centos从入门到使用视频教程

阿里云漏洞修复

阿里云 —— Windows下搭建“阿里云音视频通信RTC“

阿里云ubuntu系统配置nodejs和升级

SpringBoot入门到精通-基于阿里云短信服务-定义Starter封装通用组件