一 、前言
WebRTC 名稱源自網(wǎng)頁即時通信(英語:Web Real-Time Communication)的縮寫。谷歌收購并開源支持網(wǎng)頁瀏覽器進行實時語音對話或視頻對話的 API。它于2011年6月1日開源并在 Google、Mozilla、Opera 支持下被納入萬維網(wǎng)聯(lián)盟的W3C推薦標準。
如果不修改 webrtc 相關(guān)源碼,建議不要去折騰編譯這個源碼工程,光下載源碼就夠你頭疼的。
可以直接引用已經(jīng)編譯好的中央庫(Maven或者Gradle):
官方推薦:
compile 'org.webrtc:google-webrtc:1.0.+'
(+ 換成對應(yīng)版本號,一定要去上面網(wǎng)址里面查詢是否存在該版本,版本號查詢地址: https://bintray.com/google/webrtc/google-webrtc )
官方地址:https://webrtc.org
二、環(huán)境準備
1、WebRTC 編譯暫時支持 linux 平臺,所以需要有一個 linux 系統(tǒng)或虛擬機
2、設(shè)置代理,這一步不做過多介紹,需要注意的是需要在終端設(shè)置代理,這一步也是比較坑的一步,大家可以搜一下怎么設(shè)置
3、下載 depot_tools:
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
4、配置 depot_tools 環(huán)境變量,最好是配置全局變量:
sudo gedit /etc/profile # 針對每個用戶
# 在最后添加下面語句
export PATH=$PATH:/home/siven/siven/softSetup/depot_tools # depot_tools 路徑
檢查配置是否成功執(zhí)行:
which gn # 如果正常打印出gn命令路徑,說明成功
三、源碼下載
1、指定一個位置存放 webrtc 源碼,當前磁盤空間不能少于20G
mkdir webrtc
cd webrtc
2、代碼同步
fetch --nohooks webrtc_android
gclient sync
源碼文件大小在 15-20G,下載過程十分漫長不要慌,請耐心等待,也可能會出現(xiàn)其他問題 ...
3、執(zhí)行環(huán)境配置腳本,會幫你檢測并安裝編譯所需要的依賴庫和工具
cd src
./build/install-build-deps.sh
四、源碼編譯
一、編譯參數(shù)指定
gn gen out/build --args='target_os="android" target_cpu="arm" is_debug=false'
out/build : 編譯生成文件的目錄,隨意指定
target_os : 編譯目標平臺 Android、iOS 等
target_cpu : cpu 架構(gòu)平臺armeabi、 armeabi-v7a、arm64-v8a、x86、x86_64等
is_debug : release 模式或者 debug 模式
二、執(zhí)行編譯
ninja -C out/build
由于是全量編譯,所以時間稍微有點長,會有進度說明,耐心等待
生成Gradle項目文件
build/android/gradle/generate_gradle.py --output-directory $PWD/out/build \
--target "http://examples:AppRTCMobile" --use-gradle-process-resources \
--split-projects --canary
執(zhí)行完,可以在out/build/目錄下會生成一個gradle的文件夾,使用 Android studio 該 gradle 目錄即可運行 demo 工程。
五、版本選擇
WebRTC 是持續(xù)在 master 分支開發(fā)的,我們二次開發(fā) webrtc 最好基于穩(wěn)定的 release 版本。查找?guī)焐系?release 版本:
git branch -r
然后 checkout 到對應(yīng)的 release 版本
git checkout -b newbranch branch-heads/73 #切換到M73版本
gclient sync #同步對應(yīng)版本的代碼
(是之前編譯的的工程,一直忙著沒時間記錄,今天是按照正常流程梳理了一遍。當時編譯的時候遇到很多問題,感覺 webrtc android 編譯實在太難了,現(xiàn)在回頭一看又很簡單,簡單是因為 webrtc 所有編譯工作已經(jīng)全部都寫在了腳本里了,只需要執(zhí)行一個腳步命令全部搞定)