Выравнивание приложения утилитой zipalign
Весьма желательно, чтобы приложение во время своей работы использовало память максимально эффективно. Если приложение содержит несжатые данные (например, некоторые виды изображений или файлы данных), то Android может отобразить эти данные непосредственно в память с помощью вызова mmap() . Однако для этого данные должны быть выровнены по 4-байтовой границе. Процессоры в Android-устройствах являются 32-разрядными, а 32 бита — это как раз 4 байта. Вызов mmap() делает так, что данные из .apk-файла как будто находятся в памяти, но если данные не выровнены по 4-байтовой границе, то вызов не сработает, и придется осуществлять лишнее копирование данных во время выполнения приложения. Утилита zipalign, которая находится в каталоге инструментальных средств Android SDK, просматривает приложение и слегка сдвигает несжатые данные, чтобы они оказались выровненными по границе 4 байтов. При этом размер файла приложения увеличивается, но незначительно. Для выравнивания .apk-файла запустите в окне инструментов следующую команду (рис. 14.4):
zipalign -v 4 имя_входного_файла.apk имя_выходного_файла.apk
Утилита zipalign не изменяет входной файл — именно поэтому при экспорте из Eclipse мы добавляем к имени часть raw, и выходной файл имеет имя, необходимое для развертывания. Если нужно перезаписать существующий файл outfile.apk, укажите опцию -f. При создании выровненного файла zipalign проверяет выравнивание. Поэтому для проверки правильности выравнивания существующего файла можно использовать утилиту zipalign следующим образом:
zipalign -c -v 4 имя_файла.apk
Очень важный момент заключается в том, что выравнивание должно выполняться после подписания — в противном случае подписание может снова сдвинуть данные с границ 4 байтов. Это не означает, что приложение будет неработоспособным, но оно будет занимать больше памяти, чем необходимо.
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.