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. |