0

我正在努力将一些库(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:由于目标名称错误(不支持“-”),我不得不更改目标名称并将“-”替换为“_”。

4

2 回答 2

0

您需要修改android_aar_prebuiltin//build/config/android/rules.gni以将相应的.so文件复制到构建目录 ( root_build_dir)。

然后,您需要将 AAR 目标的依赖项android_apk直接添加到您的目标中。最后,还要将.so构建目录中的文件添加到(这很关键)的loadable_modules指令中。android_apk

GN 参考是您的朋友。

于 2018-01-19T00:13:00.820 回答
0

根据此处给出的文档: https ://chromium.googlesource.com/chromium/src/build/config/+/master/android/rules.gni#4119

不支持 .aar 和 .so 吗?

于 2020-06-23T12:47:24.190 回答