Вопрос

В нашем приложении для Android у нас есть два файла .so:один для x86, а другой для ARM.Они довольно большие и увеличивают размер файла .apk с 7 МБ до 11 МБ.

Поскольку файлы .so являются объектами времени выполнения, они должны находиться внутри файлов .apk.

Есть ли какой-нибудь способ, которым я мог бы уменьшить размер файлов .so или использовать / встроить его в свой .apk лучшим способом?

Отсюда я получил одно очко http://developer.sonymobile.com/2012/01/31/tips-for-reducing-apk-file-size/ т.е.чтобы удалить отладочные символы из машинного кода.

Это было полезно?

Решение

Play Store позволяет вам загружайте отдельные APK-файлы для каждой архитектуры процессора.Таким образом, у вас был бы ARM APK и x86 APK, а не один APK с обоими.

Настройка таких APK-файлов относительно проста с Gradle для Android - используйте отдельный вкус продукта для каждой архитектуры.Я предполагаю, что есть рецепты для этого за пределами Gradle для Android, хотя я подозреваю, что это более сложный процесс.

Другой подход заключается в том, чтобы просто не распространять x86 .so.Современные Android-устройства на базе x86, как правило, имеют libhoudini, что позволяет им использовать ARM .so Библиотеки NDK.Однако, как и в случае с эмулятором Android, эмуляция ARM на x86 выполняется медленно, поэтому вам нужно протестировать и посмотреть, приемлемо ли работает ваше приложение на x86.

И, как мистерСтраттон предлагает, особенно если библиотеки принадлежат вам, посмотреть, сможете ли вы уменьшить размер самой библиотеки.ProGuard не удаляет машинный код так, как он удаляет Java-код.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top