mobnews

Честно о связи, тарифах и софте

Колонку ведёт Илья Рябов

Новость

Динамические иконки приложения на Flutter: подробная инструкция для ручного выбора и обновлений по воздуху

Вчера на Хабре вышла инструкция — как сделать так, чтобы иконка приложения на вашем телефоне менялась сама. Без апдейта в Google Play или App Store, без вашего согласия. Просто потому что маркетологу захотелось «освежить» к праздникам.

Илья Рябов, Обозреватель мобильного рынка и охотник за мелким шрифтом·обновлено 26 июня 2026 г.

Динамические иконки приложения на Flutter: подробная инструкция для ручного выбора и обновлений по воздуху

Как это работает под капотом

На Android иконка живёт в AndroidManifest.xml — это «паспорт» приложения, где прописано, как оно запускается. Чтобы обойти это жёсткое правило, разработчики делают хитрость: прописывают несколько `<activity-alias>` — клонов главной активности, каждый со своей иконкой. PackageManager (системная штука, которая рулит установленными приложениями) включает нужный alias и выключает старый — и вот у вас на экране уже новая картинка.

У Apple свой путь — через `setAlternateIconName`. Иконки-альтернативы лежат не в `Assets.xcassets`, как обычные ассеты, а прямо в корне проекта, и их надо вручную прописать в `Info.plist`. То есть Apple даёт эту возможность из коробки, но с нагрузкой — каждую новую иконку придётся заранее зашить в сборку.

Вся инфраструктура заточена под два сценария. Первый — ручной выбор: юзер сам в настройках тыкает «хочу тёмную иконку». Второй — обновление по воздуху через Firebase Remote Config. Это сервис Google, который присылает приложению команду «а теперь покажи иконку с Дедом Морозом», и та сама подменяется на устройстве. Без релиза в сторе, без вашего участия, без предупреждения.

Почему пользователю не всё равно

Звучит безобидно — ну иконка, ну праздничная. Но по-честному: когда маркетолог может удалённо менять визуал приложения на вашем экране, это уже вопрос доверия. Проснулись — а у вас иконка банка сменилась, потому что его купили. Или новостное приложение «нарядилось» к 1 мая в веночек. Вы об этом не узнаете, пока не прочитаете новости. А если не читаете — и не узнаете вообще.

Отдельный сюрприз ждёт владельцев Android. Включение и выключение activity-alias сбрасывает стек приложения — все открытые вкладки, история, незакрытая корзина улетают в трубу. Приложение на пару секунд выпадает из памяти, фоновые задачи могут отвалиться. То есть за красивую иконку вы платите микроотвалом сервиса. Не катастрофа, но раздражает — особенно если вы как раз оформляли заказ или дописывали сообщение в чате.

И ещё момент, который мне не нравится. Вспомните историю с VK, когда Apple выкинула все приложения холдинга из App Store — пользователи остались без обновлений и пушей. Так вот, динамические иконки идут в комплекте с тем же подходом: ваш домашний экран становится ещё одной поверхностью, которой управляет не Apple, не Google и не вы, а разработчик с Remote Config.

Что с этим делать

Если заметили, что иконка приложения внезапно изменилась — это не глюк и не вирус. Скорее всего, разработчик просто качает Remote Config и проверяет фичу на проде. Не надо сносить приложение и ставить заново — потеряете данные и сохранённый прогресс.

Относитесь к «праздничным» иконкам как к рекламе. Это реклама и есть — просто встроенная в ваш домашний экран, мимо блокировщиков и без баннерной слепоты. Если хочется стабильности — пользуйтесь сторонними лаунчерами, которые позволяют подменять визуал ярлыков самостоятельно. Так хоть иконка будет та, которую выбрали вы, а не та, которую прислал сервер.

А разработчикам напоминание, раз уж вы это читаете. Динамическая иконка — не бесплатный сыр. Помимо сброса стека на Android, вы заставляете Apple и Google гонять ваш пакет через ревью при добавлении каждого нового ассета. Прежде чем пилить «переключение к каждому празднику», трижды посчитайте, окупит ли это лишний геморрой с модерацией и жалобы юзеров на «у меня всё сбросилось».

В следующий раз, когда иконка на телефоне сменится без предупреждения, — будете знать, кто за этим стоит. И почему это не «магия», а вполне конкретная инженерная работа.