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

好了,編譯結束了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM