Как стать автором
Обновить

Комментарии 2

Хороший и полезный обзор приёмов, спасибо! От себя могу добавить ещё пару пунктов:

1) Выставление minSdk на 24 позволяет избавиться от части автоматически сгенерированных растровых картинок из векторов содержащих тэг gradient - этот тэг не корректно обрабатывается до апи 23 включительно и вызывает краш при обращении к ресурсу в рантайме, поэтому gradle во время сборки для всех векторных изображений содержащих тэг gradient генерирует растровые png изображения под соответствующий dpi. Также начиная с minsdk 24 немного уменьшается размер dex-файлов (скомпилированного байткода), точных причин не вспомню, но кажется связано это с более полноценной поддержкой java 8. Совет, разумеется, применим не для всех, но если есть возможность сделать minSdk 24 - то это круто.
2) Иногда вручную получается оптимизировать растровые картинки лучше чем автоматическими инструментами. Писал для интереса инструмент который рекурсивно ходил по директории с ресурсами и сначала пытается оптимизировать изображения с помощью pngquant, а затем преобразовывает их в webp формат через cwebp. Проблема в том что разные изображения содержат разные цвета и другие параметры, и одни можно сжать сильнее других без потери качества, а другие начнут видимо терять качество даже при небольшой обработке. Поэтому когда я проходился по всем изображениям в проекте вручную и где-то вручную пропорционально сжимал размер в пикселях, где-то руками удалял сохранённые с файлом метаданные, где-то больше или меньше оптимизировал png через pngquant, и с большим или меньшим значением качества прогонял преобразование в webp, контролируя визуально итоговое качество, то у меня получилось ужать размер ресурсов в конечном апк почти на 70% лучше, чем в случае применения автоматического подхода. Некоторые изображения получилось сжать в разы, и даже десятки раз, личный рекорд - более чем в 100 раз (png 1.2Мб без видимой потери качества был ужат до 11 Кб)

Спасибо за советы!

Зарегистрируйтесь на Хабре, чтобы оставить комментарий