Как общие библиотеки упакованы в apk?

Я работаю над некоторым скриптом для пользовательской системы сборки, и мне нужно упаковать некоторые файлы .so в android apk (aars с собственными библиотеками еще не поддерживаются).

Я вызвал ./gradlew assembleDebug --debug для проекта apk, который зависит от aar с собственными библиотеками (.so), чтобы получить полный журнал, но не нашел никаких путей файлов .so, переданных в aapt или любой другой инструмент сборки Android (хотя я видел .so зачистку команды с помощью инструмента ndk strip).

Как это делается в деталях? Инструмент aapt делает это? Существуют ли какие-либо подходящие аргументы для этого, или они должны быть просто сохранены на некоторых определенных путях (например, libs).


person 4ntoine    schedule 07.06.2017    source источник


Ответы (1)


Да, aapt через вызов типа aapt add -v MyApp.apk lib/armeabi/libMyLib.so.

Используйте aapt --list MyApp.apk, чтобы убедиться, что он находится в apk с этой структурой каталогов (папка lib, подпапка armeabi и MyApp.apk внутри нее).

После установки приложения найдите в /data/app/com.Company/android/MyApp-X/lib/arm/ libMyLib.so, чтобы убедиться, что оно скопировано.

Если проблемы, вывод logcat действительно полезен, сообщая вам о том, какой путь пробовали, какую функцию пробовали и т. д.

Очевидно, замените имя приложения, название компании и архитектуру armeabi, чтобы они соответствовали параметрам вашего проекта.

person Andrew Lamoureux    schedule 07.05.2018