最近由于工作原因在研究安卓上的WebRTC开发。谈到开发,首当是编译。期间遇到一些问题,在此记录一下。
实际上谷歌官方提供的步骤很简单,但是由于众所周知的原因很多需要下载的东西无法直接下载(特别是外企的网络,是不是都很差?),所以我选择在亚马逊的虚拟机下载好了之后,将所有工程文件拷贝到本地的VirtualBox虚拟机中进行编译。所以大家需要想办法啦!注册亚马逊,或者找个别的什么代理,作为程序员这个不难吧!
前提:WebRTC的编译环境要求是64位操作系统,所以无论是本地还是云端,都请确保64位操作系统。
以下步骤在亚马逊的虚拟机上操作:
第一步: 安装相关软件
SVN: sudo apt-get install subversion
Git: sudo apt-get install git
JDK 1.6 (必须是1.6否则报错)
下载ANT,Android SDK, Android NDK
下载deploy_tools: git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
第二步: 安装依赖包
g++ (>= 4.2)
python (>= 2.4)
libnss3-dev >= 3.12
libasound2-dev
libpulse-dev
libjpeg62-dev
libxv-dev
libgtk2.0-dev
libexpat1-dev
libudev-dev
lib32asound2-dev
ia32-libs
第三步: 配置环境变量
需要JAVA_HOME, 并且在PATH指向bin目录
ANT的bin目录需要放到PATH下
Android的SDK目录: export ANDROID_SDK_ROOT=/usr/local/google/bin/android-sdk-linux
Android的NDK目录: export ANDROID_NDK_ROOT=/usr/local/google/bin/android-ndk-r7
deploy_tools目录需要放到PATH下
第四步: 下载源码
gclient config https://webrtc.googlecode.com/svn/trunk
echo "target_os = ['android']" >> .gclient
gclient sync --nohooks
第五步: 下载工程文件
cd trunk
source ./build/android/envsetup.sh
gclient runhooks
当正常结束后,请备份。如果后面编译没问题可将这个版本拷贝到本地,这样就无需将编译过的东西也拷贝到本地。
第六步: 编译
ninja -C out/Debug
如果编译正常完成后,将trunk目录拷贝到本地,当然本地环境应该和云端环境一样不再赘述。
有两个问题需要特别说明:
第一,deploy_tools这个工具在国内貌似用git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git是无法正常下载的。所以我就用了代理(代理无处不在)在本地下载,这个目录并不是很大,很快就下载好了。我尝试过用代理下载WebRTC的代码,失败,因为代码量太大,而代理进来又十分不稳定。
大家肯定非常想问为啥deploy_tools必须在本地下载?因为我曾经从亚马逊上拷贝下来,然后再运行时报文件已被更改,请提交或者回溯的错误。我尝试提交(当然不成功),尝试回溯也悲剧的失败了。所以无奈只能在本地重新下载,多亏不是很大。
第二,请不要把工程目录(也就是trunk)下的.svn目录全部删掉。我曾经用命令把所有的.svn目录删掉,然后编译时悲剧的报了一个错误,明确指出找不到某.svn目录下的某文件找不到。还没时间研究为什么,等我有结论再做补充。