1. 程式人生 > 其它 >使用ninja -C out/Release指令編譯安卓Webrtc的SDK報錯找不到android ndk處理方式

使用ninja -C out/Release指令編譯安卓Webrtc的SDK報錯找不到android ndk處理方式

之前我們也介紹過很多關於webrtc的編譯,由於gn 比 GYP 快不少,因此目前我們編譯WebRTC是使用 gn 來生成構建指令碼,使用 ninja 來構建。

gn生成ninja命令

使用 gn 生成 ninja 構建檔案的常用命令如下:

// 生成 debug 版本的構建檔案,預設配置
gn gen out/Debug 

// 生成 release 版本的構建檔案
gn gen out/Release --args="is_debug=false"

ninja指令碼

在skia\gyp下面的gyp指令碼是模板,執行sync-and-gyp時會根據這些模板來動態生成實際的構建指令碼。很多模組依賴、條件等都可以在這個目錄下的gyp或gypi中找到。

使用ninja -C out/Release指令編譯報錯

使用ninja -C out/Release指令編譯安卓所需要的webrtc sdk時,出現了以下錯誤:
ninja: Entering directory `android/Release’
ninja: error: ‘…/…/third_party/android_ndk/sources/android/cpufeatures/cpu-features.c’, needed by ‘obj/third_party/android_sdk/cpu_features/cpu-features.o’, missing and no known rule to make it

從這個報錯我們可以得知是檔案依賴關係有問題,找不到所需要的檔案。這種情況有時候是因為工程所在的目錄發生改變,找不到依賴,對於webrtc而言,裡面所依賴的外掛都會下載到webrtc中第三方庫裡,但是開啟webrtc第三方庫裡面找cpu-features.c檔案是找不到的,所以表明webrtc缺少android ndk第三方。

因此我們需要從安卓官網下載所需ndk(https://developer.android.google.cn/ndk/downloads/revision_history),並拷貝到webrtc目錄下面的third_part/android_ndk裡面。然後再次執行ninja -C out/Release指令,此錯誤消失。