在Ubuntu12.10-32bit上構建、測試WebRTC之Android示例WebRTCDemo

參考資料:html

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

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

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

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

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

1.廢話

筆者是一個不熟悉Linux操做系統的小鳥。爲了想跑一跑Google項目WebRTC中的Demo--video_engine,筆者花費了大量的時間和精力在網上查資料並進行嘗試可是因爲Google代碼更新很快,網上的很多資料都隨着時間推移失效,外加WebRTC項目自己的問題,筆者走了不知道多少彎路,最終勉強纔算把Demo跑了起來。在這裏我把這一過程作一個簡單的分享,但願能給和我同樣的小鳥一點幫助,也但願有大高玩點出個人錯誤,爲我指一條明路。Orz..bash

下面步入正題。eclipse


2.獲取WebRTC項目代碼


2.1安裝Depot_tools

整個WebRTC項目的文件都是經過Depot_tools同步下來的,爲了獲得它須要裝兩個東西:ide

sudo apt-get install git-coresvn

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。

相關文章
相關標籤/搜索