如何使用本机库的Android库作为Chromium的依赖?

时间:2017-05-30 13:24:51

标签: android chromium gn

我正在努力将一些包含本机库(aar)的库(.so)集成到Chromium中(Snapdragon优化的fork更详细)。

为了在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 :我必须更改目标名称并替换" - "到" _"因为目标名称错误(" - "不受支持)。

2 个答案:

答案 0 :(得分:0)

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

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

GN Reference是你的朋友。

答案 1 :(得分:0)