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

折腾了好多天,终于将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
//重启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分钟以上,不要着急,这是正常现象。

下列现象去年的版本会出现,但是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 runhooks

ninja -C out/Debug AppRTCDemo
复制代码

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

好了,编译结束了

猜你喜欢

转载自blog.csdn.net/ai2000ai/article/details/80810454