参考资料:

http://www.webrtc.org/reference/getting-started

http://www.webrtc.org/reference/getting-started/prerequisite-sw

http://code.google.com/p/webrtc/issues/detail?id=1435

http://code.google.com/p/webrtc/source/browse/trunk/src/video_engine/main/test/android_test/Android.mk?spec=svn2817&r=2817

http://www.verydemo.com/demo_c131_i2918.html

1.废话

笔者是一个不熟悉Linux操作系统的小鸟。为了想跑一跑Google项目WebRTC中的Demo--video_engine,笔者花费了大量的时间和精力在网上查资料并进行尝试但是由于Google代码更新很快,网上的不少资料都随着时间推移失效,外加WebRTC项目本身的问题,笔者走了不知道多少弯路,最终勉强才算把Demo跑了起来。在这里我把这一过程做一个简单的分享,希望能给和我一样的小鸟一点帮助,也希望有大高玩点出我的错误,为我指一条明路。Orz..

下面步入正题。


2.获取WebRTC项目代码


2.1安装Depot_tools

整个WebRTC项目的文件都是通过Depot_tools同步下来的,为了得到它需要装两个东西:

sudo apt-get install git-core

sudo apt-get install subversion

待安装完成后就可以克隆Depot_tools了:

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

然后把Depot_tools的路径写到.bashrc里(这样就不用每次打开一个终端都写一次):

gedit ~/.bashrc

在文件最后添加即可

export PATH="$PATH":home/xxx/depot_tools

搞完之后注销一下,再愉快地登陆并打开终端,输入 gclient进行测试。成功的话会有一陀指令说明显示出来,接下来就可以获取WebRTC的trunk了。


2.2获取代码,准备make

在终端里输入

gclient config https://webrtc.googlecode.com/svn/trunk

然后这里有一步比较关键,就是到trunk目录里找到一个名为“ .client ”的文件,编辑它在它的最后添加一行:

target_os = ['android', 'unix']

如果不添加就等着被坑爹吧。接下来你就可以轻松愉快地sync代码啦:

gclient sync

东西很多,等吧。

待完成后,到目录/trunk/third_party/android_tools/下你可以看到sync下来的sdk和ndk,把它们在系统里的路径分别写到环境变量里(可以写到.bashrc中)。

export ANDROID_SDK_ROOT=xxxxxxx/SDK

export ANDROID_NDK_ROOT=xxxxxxx/NDK

注意这里很关键,SDK你可以去官网下,但是,这个NDK请务必使用sync下来的这版,除非你是大神知道自己用其它办法也能实现

接下来有一个专门为ubuntu准备的脚本,运行它从而可以把编译项目所需的工具安装起来:

./build/install-build-deps.sh

又是一阵等待,如果不想等,也可以参考 这里 只安装必不可少的部分。

结束后就可以进入编译环节。


2.3编译WebRTC

首先生成makefile文件:

source ./build/android/envsetup.sh --try-32bit-host

gclient runhooks

注意!如果在runhooks的时候报如下错:

/trunk/third_party/android_tools/ndk//toolchains/arm-linux-androideabi-4.6/prebuilt/linux-i686/bin/*-gcc: not found


则需要进入目录/trunk/third_party/android_tools/ndk//toolchains/arm-linux-androideabi-4.6/prebuilt/把linux-x86改成linux-i686,然后再在ndk-build之前把它改回来,即还原成linux-x86。

然后

make

待make完成后你应该能在trunk/out/debug目录下发现大量 .a格式的文件。


3.build WebRTCDemo

下面为构建WebRTCDemo生成 .so文件

cd webrtc/video_engine/test/android/

ndk-build

成功后会生成libwebrtc-video-demo-jni.so 。


到这里,烦躁的工作就基本结束了,下面只需要把/trunk/webrtc/video_engine/test/android这个项目import到你的eclipse中测试就可以啦。

注意一开始刚导进去的时候项目本身有错误,是因为有几个文件没被包含在里面,你只要到webrtc目录里搜索相应的文件并添加到项目里即可,添加完成后的样子应该是:
















4 曾遇到的各种错误


错误1.

在ndk-build的时候报错:

Android NDK: Check that jni/../../../../../out/Debug/libvideo_engine_core.a exists or that its path is correct

原因是没有按照2.2所述那样添加 target_os = ['android', 'unix'] ,需要按上面所述的步骤推倒重来。其它类似找不到.a的错误也可以尝试如此解决。

错误2.

在ndk-build的时候报错:

Assembler messages: Fatal error: invalid -march= option: `armv7-a' error 1 ..

或者报错:

arm-linux-androideabi-ld: Syntax error: "(" unexpected ...

原因是NDK的版本不对,请使用trunk/thirdparty/androidtools/里的NDK

错误3.

在ndk-build的时候报错:

make: /home/liuhao/depot_tools/trunk/third_party/android_tools/ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc: Command not found

原因很可能是之前没有按2.3中所述那样没把路径改回来。

错误4.

在runhooks的时候报错:

/bin/sh: 1: /home/liuhao/depot_tools/trunk/third_party/android_tools/ndk//toolchains/arm-linux-androideabi-4.6/prebuilt/linux-i686/bin/*-gcc: not found

原因见2.3

错误5.

在运行demo的时候报错:

Could not find class 'android.graphics.SurfaceTexture

原因是需要至少支持API11。

错误6.

在运行demo的时候报错:

NoClassDefFoundError : org.webrtc.voiceengine.(或者其它class)

解决方法见上述3。



更多相关文章

  1. Android(安卓)xml文件的颜色配置
  2. Android常见错误之[email protected] that was originally
  3. Android获取Apk文件图标信息
  4. Android(安卓)opencv库使用遇到的坑
  5. Android中读取中文字符的文件与文件读取相关
  6. 如何将ADT(eclipse)开发工具锁定到LaucherPad启动器上
  7. Android常用到得方法积累
  8. Android中调用startActivity结果导致:java.lang.RuntimeException
  9. Android(安卓)SDK Manager更新 != 问题解决方法

随机推荐

  1. android中添加arial字体(非android默认字
  2. android自动连接wifi——WifiManager
  3. Android—构建安全的Android客户端请求,避
  4. android 在程序中开启GPS功能
  5. 记录一下maven android 的启动命令
  6. GooglePlay 分包 安装obb
  7. android RelativeLayout 相对布局
  8. Android各个版本API的区别
  9. Android(安卓)3.0上访问出现 android.os.
  10. android repo/git server 建立过程(2)