Как использовать библиотеку Android с нативной библиотекой в качестве зависимости для 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 () с файлами.so не поддерживается. Используйте ignore_native_libraries = true, чтобы отключить эту ошибку.
Отсюда: 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: мне пришлось изменить имена целей и заменить "-" на "_" из-за ошибки имени цели ("-" не поддерживается).
1 ответ
Вам нужно изменить android_aar_prebuilt
в //build/config/android/rules.gni
скопировать соответствующий .so
файлы в каталог сборки (root_build_dir
).
Затем вам нужно добавить зависимость от цели AAR к вашему android_apk
цель непосредственно. Наконец, также добавьте .so
файлы в вашем каталоге сборки на loadable_modules
директива android_apk
(это критично).
Справочник GN - ваш друг.
Согласно документации, приведенной здесь:https://chromium.googlesource.com/chromium/src/build/config/+/master/android/rules.gni
Разве не поддерживается.aar с.so?