zipalign

zipalign — это инструмент выравнивания zip-архивов, который помогает гарантировать, что все несжатые файлы в архиве выровнены относительно начала файла. Это позволяет получать доступ к файлам напрямую через mmap(2) , устраняя необходимость копировать эти данные в оперативную память и уменьшая использование памяти вашим приложением.

Используйте zipalign , чтобы оптимизировать APK-файл перед его распространением конечным пользователям. Если вы выполняете сборку с помощью Android Studio, которая использует плагин Android Gradle (AGP), это делается автоматически. В этом случае вам все равно следует использовать zipalign чтобы убедиться, что APK выровнен, но вам не нужно его выравнивать. Эта документация предназначена в основном для сопровождающих пользовательских систем сборки.

Внимание: вы должны использовать zipalign на определенном этапе процесса сборки. Этот момент зависит от того, какой инструмент подписи приложений вы используете:

  • Если вы используете apksigner , zipalign необходимо использовать до подписания APK-файла. Если вы подпишете свой APK с помощью apksigner и внесете в него дальнейшие изменения, его подпись станет недействительной.
  • Если вы используете jarsigner (не рекомендуется), zipalign необходимо использовать после подписания APK-файла.

Чтобы добиться выравнивания, zipalign изменяет размер "extra" поля в разделах заголовка локального файла zip. Этот процесс также может изменить существующие данные в "extra" полях.

Использование

Если ваш APK содержит общие библиотеки (файлы .so ), используйте -P 16 , чтобы убедиться, что они выровнены по границе страницы размером 16 КБ, подходящей для mmap(2) как на устройствах 16 КБ, так и на 4 КБ. Другие файлы, выравнивание которых определяется обязательным аргументом выравнивания zipalign , должны быть выровнены по 4 байтам как в 32-битных, так и в 64-битных системах.

Чтобы выровнять infile.apk и сохранить его как outfile.apk :

zipalign -P 16 -f -v 4 infile.apk outfile.apk

Чтобы подтвердить выравнивание existing.apk , используйте следующую команду.

zipalign -c -P 16 -v 4 existing.apk

Параметры

В следующей таблице перечислены доступные параметры zipalign :

Вариант Описание
Проверяет только выравнивание (не изменяет файл).
Перезаписывает существующий выходной файл.
-час Отображает справку по инструменту.
-P <размер_страницы_кб> выравнивает несжатые файлы .so по указанному размеру страницы в КиБ. Допустимые параметры для <pagesize_kb> : 4, 16 и 64.
-п 4 КБ выравнивает страницы несжатых файлов .so . Вместо этого рекомендуется использовать -P 16 , поскольку -p устарел.
-v Подробный вывод.
Повторно сжимает с помощью Zopfli.