我正在努力将一些库(aar
包含本机库 ( .so
))集成到 Chromium 中(更详细地是针对 Snapdragon 优化的分支)。
为了在 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 具有本机库。
在构建 Chromium 时出现错误:
不支持带有 .so 文件的 android_aar_prebuilt()。使用 ignore_native_libraries = true 来消除这个错误。
它来自这里: https ://chromium.googlesource.com/chromium/src/build/config/+/master/android/rules.gni#2817
断言(_ignore_native_libraries || !_scanned_files.has_native_libraries, ...
是否有可能使用aar
本机库、一些解决方法或修改rules.gni
?如果我必须自己添加支持 - 我是否应该编辑rules.gni
并添加从解压缩aar
到目标目录的本地库(这似乎很简单)?
更新 1:由于目标名称错误(不支持“-”),我不得不更改目标名称并将“-”替换为“_”。