2017-05-30 186 views
0

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

+0

你知道了吗? – Hades

+0

是的,我不得不破解'android_rules.gni'来添加支持 – 4ntoine

+1

你可以发布你的解决方案吗? – Hades

回答

0

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

然后,您需要直接将AAR目标的相关性添加到android_apk目标。最后,还要将您的编译目录中的.so文件添加到loadable_modules指令android_apk(这很重要)。

GN Reference是你的朋友。

相关问题