Иконка лаунчера Android не отображается после успешной сборки в Flutter

Вопрос или проблема


изображение здесь
Я разрабатываю приложение на Flutter, и у меня возникли проблемы с тем, что пользовательская иконка заставки не отображается на Android. Несмотря на то, что я следовал обычному процессу генерации иконки и подтвердил, что файл изображения правильно размещён, по-прежнему отображается стандартная иконка Android.

Вот детали того, что я сделал:

  • Я использую flutter_launcher_icons для генерации иконок.

  • Мой pubspec.yaml включает следующую конфигурацию:

    flutter_launcher_icons:
      android: "launcher_icon"
      ios: true
      image_path: "assets/images/icon.png"
      min_sdk_android: 21 # min sdk для android min:16, по умолчанию 21
      web:
        generate: true
        image_path: "assets/images/icon.png"
        background_color: "#hexcode"
        theme_color: "#hexcode"
      windows:
        generate: true
        image_path: "assets/images/icon.png"
        icon_size: 48 # min:48, max:256, по умолчанию: 48
      macos:
        generate: true
        image_path: "assets/images/icon.png"
    
    
    <application
            android:label="appName"
            android:name="${applicationName}"
            android:icon="@mipmap/launcher_icon">
    
    • Я уже пробовал flutter clean и пересобрал APK, но пользовательская иконка по-прежнему не отображается.

    • Я также пробовал удалить и переустановить приложение на своём устройстве и очистил кэш приложения, но оно по-прежнему показывает стандартную иконку робота Android.

    Я проверил путь к изображению и убедился, что иконка в формате PNG, квадратная и соответствует размерным рекомендациям.

    Есть идеи, почему иконка заставки не отображается правильно на Android?

    Окружение:

    • Версия Flutter: 3.16.9

    • flutter_launcher_icons: v0.13.1

    • Android SDK: C:\\Users\\...

В текущей версии flutter_launcher_icons v.0.14.1 для android есть ошибка: https://github.com/fluttercommunity/flutter_launcher_icons/issues/600

Попробуйте использовать более раннюю версию (0.13.1) пока…

Похоже, проблема в конфигурации вашего файла pubspec.yaml. Пакет flutter_launcher_icons ожидает, что конфигурация будет под ключом flutter_icons, а не flutter_launcher_icons. Вот как вы можете это исправить:

  1. Обновите конфигурацию в вашем файле pubspec.yaml: замените flutter_launcher_icons: на flutter_icons:. Ваша обновлённая конфигурация должна выглядеть так:

    android: "launcher_icon"
    ios: true
    image_path: "assets/images/icon.png"
    min_sdk_android: 21 # min sdk для android min:16, по умолчанию 21
    web:
      generate: true
      image_path: "assets/images/icon.png"
      background_color: "#hexcode"
      theme_color: "#hexcode"
    windows:
      generate: true
      image_path: "assets/images/icon.png"
      icon_size: 48 # min:48, max:256, по умолчанию: 48
    macos:
      generate: true
      image_path: "assets/images/icon.png"
    
    
  2. Перегенерируйте иконки заставки:
    Запустите следующие команды в вашей терминале:

    flutter pub get 
    flutter pub run flutter_launcher_icons:main
    
  3. Очистите и пересоберите ваш проект:

    flutter clean
    flutter build apk
    
  4. Проверьте файлы иконок: Убедитесь, что файлы иконок заставки были сгенерированы в правильных директориях:

android/app/src/main/res/mipmap-*/launcher_icon.png
  1. Еще раз проверьте путь к изображению: подтвердите, что изображение по адресу assets/images/icon.png существует и доступно. Изображение должно быть:
В формате PNG
Квадратным (равная ширина и высота)
С адекватным разрешением (рекомендуется не менее 1024x1024 пикселей)
  1. Подтвердите конфигурацию AndroidManifest.xml: ваш AndroidManifest.xml кажется правильным, но для уверенности он должен включать:
<application
    android:label="appName"
    android:name="${applicationName}"
    android:icon="@mipmap/launcher_icon">
  1. Удалите существующее приложение перед переустановкой: иногда кэшированные иконки могут всё-таки отображаться. Полностью удалите приложение с вашего устройства перед его переустановкой.

Если ваша иконка черная после успешной сборки, возможно, вы можете попробовать следующее:

image_path: "assets/images/icon.png"

android: true
ios: true
image_path_android: "assets/images/icon.png"
min_sdk_android: 21 # min sdk для android min:16, по умолчанию 21
adaptive_icon_background: "#ffffff"
adaptive_icon_foreground: "assets/images/icon.png"

Не забудьте также проверить путь к изображению!

Ответ или решение

Проблема с иконкой лаунчера в Flutter на Android: подробное руководство по устранению неполадок

Разработка приложений на Flutter предоставляет множество преимуществ, однако проблемы с отображением кастомной иконки лаунчера на Android могут вызвать затруднения. Если вы столкнулись с ситуацией, когда иконка вашего приложения не отображается после успешной сборки, следуйте этому детальному руководству для решения проблемы.

Шаги по устранению неполадок

  1. Проверка конфигурации в pubspec.yaml:
    Убедитесь, что конфигурация плагина flutter_launcher_icons корректна. Обратите внимание, что начиная с версии 0.14.1, ключ должен быть flutter_icons, а не flutter_launcher_icons. Пример правильной конфигурации:

    flutter_icons:
     android: "launcher_icon"
     ios: true
     image_path: "assets/images/icon.png"
     min_sdk_android: 21

    Убедитесь, что вы снова проверили все параметры, особенно image_path.

  2. Генерация иконок:
    После внесения изменений в pubspec.yaml выполните следующие команды в терминале для обновления зависимостей и генерации иконок:

    flutter pub get
    flutter pub run flutter_launcher_icons:main
  3. Очистка и сборка проекта:
    Выполните очистку кеша и пересоберите приложение:

    flutter clean
    flutter build apk
  4. Проверка файлов иконок:
    Убедитесь, что иконки были сгенерированы и находятся в правильных директориях. Проверьте наличие файлов в следующих каталогах:

    android/app/src/main/res/mipmap-*/launcher_icon.png
  5. Проверка формата и размера изображения:
    Убедитесь, что ваш иконка соответствует следующим критериям:

    • Формат PNG
    • Квадратная форма (ширина и высота равны)
    • Рекомендуемое разрешение не менее 1024×1024 пикселей
  6. Проверка AndroidManifest.xml:
    Ваш файл AndroidManifest.xml должен содержать правильные настройки, включая поле android:icon. Пример:

    <application
       android:label="appName"
       android:name="${applicationName}"
       android:icon="@mipmap/launcher_icon">
  7. Переустановка приложения:
    После выполнения всех вышеописанных шагов полностью удалите приложение с устройства перед повторной установкой. Это поможет избежать проблем с кэшированием иконок.

  8. Адаптивные иконки (по желанию):
    Если ваша иконка отображается черной, вам стоит попробовать установить адаптивные иконки. Пример конфигурации:

    flutter_icons:
     android: true
     ios: true
     image_path_android: "assets/images/icon.png"
     min_sdk_android: 21
     adaptive_icon_background: "#ffffff"
     adaptive_icon_foreground: "assets/images/icon.png"

    Убедитесь, что путь к изображению правильный.

Заключение

Соблюдение вышеперечисленных шагов должно помочь вам решить проблему с отображением иконки лаунчера в вашем приложении Flutter для Android. Если проблема сохраняется, рассмотрите возможность проверки официальной документации и репозиториев GitHub на наличие обновлений и исправлений от сообщества. Не забывайте актуализировать зависимости и корректно настраивать окружение разработки.

Для повышения видимости вашего приложения в Google Play, убедитесь, что иконка лаконична и легко распознается, а также соответствует дизайну вашего приложения.

Оцените материал
Добавить комментарий

Капча загружается...

  1. Гость

    Я недавно столкнулся с этой же проблемой и после долгих поисков нашёл решение. Оказывается, в конфигурации pubspec.yaml нужно использовать ключ `flutter_icons` вместо `flutter_launcher_icons`. После замены и повторной генерации иконок моя кастомная иконка наконец-то появилась на Android. Также убедитесь, что версия пакета flutter_launcher_icons совместима — я использовал версию 0.13.1, чтобы обойти известный баг. Возможно, это поможет решить вашу проблему.

    Ответить