如何将 android 库与本机库一起用作 Chromium 的依赖项?
How to use android library with native library as dependency for Chromium?
我正在努力将一些库(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 时出现错误:
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:由于目标名称错误(不支持“-”),我不得不更改目标名称并将“-”替换为“_”。
您需要修改 //build/config/android/rules.gni
中的 android_aar_prebuilt
以将适当的 .so
文件复制到构建目录 (root_build_dir
) 中。
然后您需要将对 AAR 目标的依赖项直接添加到您的 android_apk
目标。最后,还要将构建目录中的 .so
文件添加到 android_apk
的 loadable_modules
指令中(这很关键)。
GN Reference是你的朋友。
根据此处提供的文档:
https://chromium.googlesource.com/chromium/src/build/config/+/master/android/rules.gni#4119
不支持 .aar 和 .so 吗?
我正在努力将一些库(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 时出现错误:
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:由于目标名称错误(不支持“-”),我不得不更改目标名称并将“-”替换为“_”。
您需要修改 //build/config/android/rules.gni
中的 android_aar_prebuilt
以将适当的 .so
文件复制到构建目录 (root_build_dir
) 中。
然后您需要将对 AAR 目标的依赖项直接添加到您的 android_apk
目标。最后,还要将构建目录中的 .so
文件添加到 android_apk
的 loadable_modules
指令中(这很关键)。
GN Reference是你的朋友。
根据此处提供的文档: https://chromium.googlesource.com/chromium/src/build/config/+/master/android/rules.gni#4119
不支持 .aar 和 .so 吗?