Как сделать общие библиотеки, извлеченные Android для AAB?

Я установил android:extractNativeLibs="true" и настроил Android 29, чтобы мои общие библиотеки были извлечены в /data/app/%package%/... Android. Если работает нормально с APK для обходного пути Проблема с разрешениями Android 10.

Недавно мне пришлось переключиться на AAB из-за увеличения размера загрузки до 150 МБ в качестве размера APK. превышает лимит Google Play в 100 МБ. При тестировании установки APK из AAB [APK из варианта развертывания пакета приложений в Android Studio] я заметил, что /data/app/%package%/.. пуст (в отличие от чистой установки одного APK), что является проблемой, поскольку мне нужно, чтобы они могли выполняться как исполняемые файлы (подробности см. в разделе об обходном пути). Я проверил разделенные файлы apks в каталоге сборки, и они содержат правильный набор для моего тестового устройства:

/out/base-arm64_v8a_2.apk
/out/base-ru.apk
/out/base-master_2.apk
/out/base-xxhdpi.apk

и я вижу общие библиотеки в apk.

Однако android:extractNativeLibs="true" игнорируется для AAB.

Это ошибка или особенность? Как я могу принудительно извлечь библиотеки даже для AAB?

PS. Использование плагина Gradle 5.6 и android.enableAapt2=true в gradle.properties. Пробовал как версии Release, так и Debug.


person 4ntoine    schedule 25.11.2020    source источник
comment
Не могли бы вы из любопытства объяснить, зачем вам нужно извлекать библиотеки? Я хотел бы понять варианты использования.   -  person Pierre    schedule 26.11.2020
comment
Как упоминалось в ссылке на обходное решение, они по сути являются исполняемыми файлами. Вариант использования - просто повторно использовать существующие функциональные возможности сторонних SDK / инструментальных цепочек (подумайте о GCC, используемом в Android для простоты). Совершенно нереально реализовать его на Java / Kotlin и крайне нежелательно создавать общие библиотеки исполняемых файлов. Строгие требования и запрет разработчикам запускать исполняемые файлы в каталоге приложения очень сбивают с толку.   -  person 4ntoine    schedule 26.11.2020


Ответы (1)


Извините за дубликат.

Вкратце: просто используйте android.bundle.enableUncompressedNativeLibs=false в своем gradle.properties.

person 4ntoine    schedule 25.11.2020
comment
У меня такая же проблема. Все работает в тестовой среде (работает и aab), но когда я загружаю в Play и устанавливаю приложение оттуда - приложение вылетает из-за того, что папка lib пуста. у вас была такая проблема? - person vadim_hr; 13.03.2021