我正在將一些庫(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:由於目標名稱錯誤(不支持「 - 」),我必須更改目標名稱並將「 - 」替換爲「_」。
你知道了嗎? – Hades
是的,我不得不破解'android_rules.gni'來添加支持 – 4ntoine
你可以發佈你的解決方案嗎? – Hades