我正在将一些库(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