天天看點

WebRTC & Android 開發學習環境搭建~

作者:星隕

來源:

音視訊開發進階

安裝 depot_tools 工具包

首先需要下載下傳

depot_tools

工具包,Git 指令如下:

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

之後要把

depot_tools

目錄添加到系統環境變量中。

export PATH=$PATH:/path/depot_tools      

通過如下指令驗證是否安裝成功

fetch --help      

顯示如下内容說明

depot_tools

配置好了。

WebRTC & Android 開發學習環境搭建~

下載下傳 WebRTC 源碼

接下來就要用到

depot_tools

去下載下傳 WebRTC 源碼了。

WebRTC 的源碼位址如下:

https://webrtc.googlesource.com/src/+/refs/heads/master/tools_webrtc/      

下載下傳執行如下指令:

mkdir webrtc
cd webrtc
fetch --nohooks webrtc_android
gclient sync      

中間的下載下傳過程耗時取決于你的網速了。

執行完如上指令後,就已經在本地拉取 WebRTC 源碼了。

如果你對以上指令感到疑惑,不知道為什麼這麼寫的話,可以參考一下 depot_tools 的使用。

如下文章:

https://www.pianshen.com/article/3086804649/

fetch 指令

其中 fetch 指令是用來擷取源碼的,有如下兩個可選參數:

  • –nohooks。這個參數表示擷取代碼完成之後不執行runhooks動作。也就僅僅擷取代碼。
  • –no-history。這個參數表示對代碼倉庫執行git shallow clones,就不會獲得原倉庫的全部曆史送出,這樣可以減少拷貝代碼倉庫的大小。

gclient 指令

其中 gclient 指令是用來管理多個子產品源代碼倉庫的工具。它封裝了一些常用的 git 指令,對所有的子產品生效。除了 sync 外,還有如下參數:

  • config。建立一個.gclient配置檔案。
  • diff。類似git的diff指令,用來比較所有子產品送出代碼的差異。
  • fetch。擷取所有子產品上遊的送出。
  • help。顯示指令的幫助。
  • revert。revert一個送出。
  • runhooks。根據DEPS檔案的描述執行hook任務。
  • stauts。類似git status指令,用來顯示所有子產品代碼的狀态。
  • sync。用來同步所有子產品的代碼。

這裡下載下傳的是 Android 源碼,如果是其他平台源碼隻需要改一下 fetch 指令最後的參數就行:

// 下載下傳 iOS 平台源碼
fetch --nohooks webrtc_ios      

安裝依賴

下載下傳完 WebRTC 後需要安裝相關的依賴,進入到 WebRTC 源碼的

src

目錄中,執行如下指令:

cd src
./build/install-build-deps.sh
./build/install-build-deps-android.sh      

執行如上兩個指令就可以下載下傳好相關依賴了。

要注意的是,如果用的 MAC 電腦下載下傳不了依賴,這個指令是給 Linux 系統用的。
WebRTC & Android 開發學習環境搭建~

要下載下傳的話,就得在 Mac 上安裝虛拟機,走虛拟機的方式了,這裡不是很推薦。

WebRTC 源碼編譯

通過如下指令進行編譯:

./build/android/envsetup.h
gn gen out/release/armeabi-v7a --args='target_os="android" target_cpu=“arm" is_debug=false'
ninja -C out/release/armeabi-v7a      

編譯成功後會輸出兩個檔案:

out/release/armeabi-v7a/lib.java/sdk/android/libwebrtc.jar
out/release/armeabi-v7a/libjingle_peerconnection_so.so      

一個 jar 包和一個 so 動态庫,這就是最終的編譯産物。利用 WebRTC 進行開發就需要導入編譯産物。

Android 環境搭建

除了編譯 WebRTC 源碼得到 so 動态庫和 jar 包之外,WebRTC 還提供了 Maven 倉庫供我們下載下傳,就像引入其他開源庫一樣:

// 目前版本
implementation 'org.webrtc:google-webrtc:1.0.28513'
// 倉庫位址:
https://bintray.com/google/webrtc/google-webrtc/1.0.28513      

一行代碼就能把編譯的産物引入進來,省去了那麼多編譯步驟。

WebRTC & Android 開發學習環境搭建~

這個

1.0.28513

對應的實作可能不是最新的,但是對于學習 WebRTC 代碼來說已經足夠了,畢竟大家都是基于 WebRTC 進行二次開發,而 Android 層的代碼僅僅是對外的 API 接口而已,更多的是要去探究其 Natice 底層代碼。

好在我們已經下載下傳了源碼,完全可以通過 API 的調用去深入研究 Native 層源碼。

源碼路徑如下:

src/sdk/android/

如下圖:

WebRTC & Android 開發學習環境搭建~

參考文章:

  1. https://zhuanlan.zhihu.com/p/56233917
WebRTC 系列文章
「視訊雲技術」你最值得關注的音視訊技術公衆号,每周推送來自阿裡雲一線的實踐技術文章,在這裡與音視訊領域一流工程師交流切磋。  
WebRTC & Android 開發學習環境搭建~