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

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

НЛО прилетело и опубликовало эту надпись здесь

Поддержка SVG работает только с iOS 13, а мы пока что поддерживаем iOS 12. Поэтому и не пользуемся.

Все ассеты теперь делятся на 2 типа. Иконки – это простые векторные изображения черного цвета, экспортируемые в формате PDF (потому что их размер не фиксирован). Иллюстрации – это растровые изображения в формате PNG (потому что использование PDF привело бы увеличения размера асетов и необходимости конвертировать их в PNG).

Надеюсь этот совет прочтет много людей и они поймут совет правильно. Много раз видел как люди клали pdf, потому что модно, и не включали Preserve Vector Data, что приводило к тому, что xcode при компиляции просто нарезал png из pdf. В итоге на выходе все теже png, но после каждой перекомпиляции новые (а значит с возможными артефактами) + существенно замедлялась компиляция. В итоге выгоды никакой, но замедляется компиляция проекта и получается лишнее слабое место, которое может сбоить само по себе.

И разработчик при этом попсиховывает, мол что за дела, почему так долго компилируется...

Убрать фазу компиляции ассетов из сборки проекта. Компилировать ассеты самостоятельно только в случае их изменения. Положить скомпилированные ассеты в бандл приложения при сборке.

А можно как-то подробнее про эти три пункта? )

Конечно.

  1. Чтобы ассеты не компилировались вместе с проектом, надо удалить их из Project -> Build phases -> Copy bundle resources

  2. Второй пункт раскрыт дальше, там где написано про actool

  3. Когда вы скомпилируете ассеты, появится архив Assets.car, который надо добавить в Project -> Build phases -> Copy bundle resources

В играх изображений на порядок больше. Те проекты, которые сейчас собираю, содержат в районе 50-60 тысяч png-шек. И тоже столкнулись с проблемой места в git, и ограничений в 150/200 Мб на размер приложения. Если кратко по этапам решения:

  1. [git] Обязательно вырезаем мета-информацию. Даже есть прекомитный хук, чтобы в репозиторий в принципе не попадали лишние данные. В некоторых случаях изображение с 25 Мб урезается до 1 Мб. Photoshop любит положить меты с лихвой.

  2. [форматы] Не знаю насколько это актуально для приложений, но у нас для разных платформ сжимается в разные форматы вроде etc2, pvrtc, webp. Это позволяет сильно сокращать размеры.

  3. [сборка] Сборка ассетов выделена в отдельную конфигурацию и собирается отдельно. Плюс обязательно используется кеш (хранится пара: хеш настроек+хеш файла -> итоговый результат). Без кеша сборка около сорока минут, с кешем - пять. Это прямо спасение. В основной сборке в post-build шаге xCode/MS Build запускаем скрипт, который берёт артефакты сборки ассеты и сливает их с другими ресурсами, потом кладёт это уже в нужную папку.

В не игровых приложениях вообще применяются атласы? Они тоже помогают сильно сэкономить и места, и скорость загрузки/отрисовки.

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