2017-05-30 103 views
0

我正在將一些庫(aar,包含本機庫(.so))集成到Chromium(Snapdragon優化叉更詳細)中。如何將本機庫的android庫用作Chromium的依賴項?

爲了在Android的代碼中使用它,我不得不修改chrome/android/BUILD.gn並添加2只依賴:

deps = [ 
    ... 
    "//third_party/libxyz_android:libxyz_android", 
    "//third_party/libxyz_android:libxyz_android_settings", 
    ... 
] 

,所以我不得不創建third_party/libxyz目錄,把AAR文件存在和創建BUILD.gn

import("//build/config/android/rules.gni") 

android_aar_prebuilt("libxyz_android") { 
    aar_path = "libxyz-android-release.aar" 
# proguard_configs = [ "src/proguard-gvr.txt" ] 
    ignore_manifest = true # Ignored because manifest merging is not supported (http://crbug.com/643967) 
    ignore_native_libraries = false 
} 

android_aar_prebuilt("libxyz_android_settings") { 
    aar_path = "libxyz-android-settings-release.aar" 
    ignore_manifest = true # Ignored because manifest merging is not supported (http://crbug.com/643967) 
} 

注意ignore_native_libraries = false由於libxyz具有本機庫。

雖然鉻的建設,我得到錯誤:

android_aar_prebuilt() with .so files is not supported. Use ignore_native_libraries = true to silence this error.

它來自這裏: https://chromium.googlesource.com/chromium/src/build/config/+/master/android/rules.gni#2817

assert(_ignore_native_libraries || !_scanned_files.has_native_libraries, ...

是否有可能使用aar與本地庫,一些解決辦法或修改rules.gni?如果我必須自己添加支持 - 我應該編輯rules.gni並將本地庫從解壓縮的aar複製到目標目錄(它看起來很簡單)?

更新1:由於目標名稱錯誤(不支持「 - 」),我必須更改目標名稱並將「 - 」替換爲「_」。

+0

你知道了嗎? – Hades

+0

是的,我不得不破解'android_rules.gni'來添加支持 – 4ntoine

+1

你可以發佈你的解決方案嗎? – Hades

回答

0

您需要修改android_aar_prebuilt//build/config/android/rules.gni才能將相應的.so文件複製到構建目錄(root_build_dir)。

然後,您需要直接將AAR目標的相關性添加到android_apk目標。最後,還要將您的編譯目錄中的.so文件添加到loadable_modules指令android_apk(這很重要)。

GN Reference是你的朋友。

相關問題