Зачем мне использовать не выровненные apks?

Когда я запускаю gradle-задачу "assemblyDebug" для получения только отладочной версии, я помещаю ее в свой телефон, она также генерирует другой apk: MyApp-debug-unaligned.apk.

Я думаю, что понимаю, что означает "выравнивание" почтового индекса. То, что он оптимизировал размещение границ файла для легкого распаковывания (поправьте меня, если я ошибаюсь). Это просто оптимизация, и она не имеет ничего общего с Android.

Таким образом, поскольку Android сохраняет все приложения в виде apks и, кажется, распаковывает их только во время выполнения, было бы полезно установить только выровненные оптимизированные apks. Для выравнивания пакета по zip-центру также требуется, казалось бы, тривиальное время, но, возможно, это связано с размером моих конкретных приложений.

Когда невыровненный почтовый индекс будет выгоднее его выровненной альтернативы? Или это просто потому, что для выравнивания требуется версия без выравнивания, а процесс не очищает файл после выравнивания?

1 ответ

Вы бы никогда не использовали неподлинный APK.

Это промежуточный продукт, который не очищен. На мой взгляд, так и должно быть.

Как это устроено:

То, что делает выравнивание, это помещает изображения и другие большие биты несжатых данных на 4-байтовую границу. Это увеличивает размер файла, но заставляет их принадлежать определенной странице. Это избавляет от необходимости выбирать несколько страниц из APK для одного изображения (то есть минимизирует количество выбранных страниц). Поскольку изображение начинается с 4-байтовой границы, есть большая вероятность, что мы не будем собирать ненужные данные, связанные с другими процессами.

В конце концов, это позволяет мне тратить меньше оперативной памяти и работать быстрее, собирая меньше страниц. Тривиальная, но хорошая оптимизация

Что касается времени, это относительно тривиально, так что оно того стоит. Очевидно, что чем больше несжатых данных у вас есть, тем больше времени требуется, но это никогда не имеет большого значения. ИМХО компилятор должен выбросить невыровненный файл, но я думаю, что кто-то хотел сохранить его.

Ресурсы:

Объявление о ZipAlign

http://android-developers.blogspot.com/2009/09/zipalign-easy-optimization.html

Актуальные документы ZipAlign

http://developer.android.com/tools/help/zipalign.html

О выравнивании структуры данных (читайте о заполнении)

https://en.wikipedia.org/wiki/Data_structure_alignment

Другие вопросы по тегам