Что означает "zipalign" и каково его значение?
Когда ПЗУ заявляет, что оно «zipaligned», что это означает и в чем отличие от ПЗУ, которое не «zipaligned»?
источник
Что означает "zipalign" и каково его значение?
Когда ПЗУ заявляет, что оно «zipaligned», что это означает и в чем отличие от ПЗУ, которое не «zipaligned»?
Этот механизм описан на сайте разработчиков Android следующим образом:
zipalign - это инструмент выравнивания архива, который обеспечивает важную оптимизацию для файлов приложений Android (.apk). Цель состоит в том, чтобы все несжатые данные начинались с определенного выравнивания относительно начала файла. В частности, он вызывает выравнивание всех несжатых данных в .apk, таких как изображения или необработанные файлы, по 4-байтовым границам. Это позволяет напрямую обращаться ко всем частям с помощью mmap (), даже если они содержат двоичные данные с ограничениями выравнивания. Преимущество заключается в уменьшении объема оперативной памяти, используемой при запуске приложения.
Вкратце: .apk
доступ к контенту может быть проще / быстрее / более оптимальным благодаря порядку данных внутри упакованного файла.
Для получения более подробной информации на AddictiveTips доступно «полное руководство»: что такое Zipalign в Android и как сделать приложения Zipaligned , которое отвечает на вторую часть вашего вопроса:
Вполне понятно, что ситуация будет зарезервирована для невыровненных пакетов приложений. Чтение ресурсов будет медленным, а использование памяти будет на более высоком конце спектра. Это также будет зависеть от того, сколько не выровненных приложений. Например, если число приложений с невыровненным домашним приложением меньше, вы увидите более медленное время запуска приложений. Это лучший вариант развития событий. В худшем случае наличие нескольких невыровненных приложений приведет к тому, что система будет многократно запускать и убивать процессы, борясь с задержками и огромным расходом батареи.
struct x { uint16_t id; uint32_t data[100]; };
если хотите, чтобы оно было выровнено 32-битным; использованиеstruct x { uint16_t id; uint16_t padding; uint32_t data[100]; };
Чтобы добавить выше, как именно работает zipalign -
Источник
источник