Продолжаю писать свои капитанские статейки про издевательства над Android.
На это раз буду делиться опытом оптимизации приложений.
Памяти никогда не бывает много, особенно внутренней, особенно на телефонах. Оптимизировать всё и вся мы не будем, но уменьшить размер модов, коих в интернете великое множество попытаемся.
Заниматься оптимизацией кода и прочими хаками не будем, а попробуем уменьшить размер графики внутри apk-пакета.
Вся графика хранится обычно в формате PNG, который очень хорошо подходит для всяких однотонных фонов и градиентов, да еще может хранить внутри себя альфа-канал для прозрачности, при этом поддерживает полноценную палитру цветов. А чтобы все эти прелести не занимали много места на диске, формат реализует довольно хитрый алгоритм сжатия практически без потери качества.
Проблема в том, что во всех модах, которые я встречал вся графика оптимизирована довольно слабо, zip-сжатие спасает, не не особо сильно. Поэтому будем исправлять этот огрех самостоятельно.
Нам понадобится следующий инструментарий:
- Любой архиватор, который полностью поддерживает zip и позволят указать степень сжатия при архивации;
- Программа OptiPNG, которую можно найти по адресу http://optipng.sourceforge.net/
После этого запускаем командную строку, или эмулятор терминала (а вдруг у Вас Linux?) и переходим в папку, куда распаковали архив. Внутри будет много интересного, но нас интересует папка "res". В ней хранится вся графика и описания интерфейса.
Теперь методично пройдемся по всем папкам внутри "res" и в каждой запустим следующую команду:
optipng -o9 *.png
Так мы оптимизируем всю графику с максимальной степенью сжатия. Некоторые моду после такой оптимизации худеют довольно значительно.
Теперь запакуем распакованный apk-пакет в zip-архив с максимальной степенью сжатия с помощью архиватора. Теперь осталось только этот архив подписать по инструкции и установить по инструкции от автора модификации.
Таким же способом можно оптимизировать загрузочную анимацию, которая тоже состоит из кучи png-файлов. Но хранятся они в zip-архиве без сжатия. Этот нюанс надо учитывать, потому что, если применить сжатие, то вместо красивой анимации Вы увидите черный экран вовремя загрузки, который в конце сменится рабочим столом.