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