Android Studio 3.3 запрещает адаптивные иконки для версии SDK менее 26

Только что обновлен с Android Studio 3.2.1 до 3.3. Ранее мой проект - таргетинг SDK v28 - построен без проблем, теперь я получаю эту ошибку сборки:

  • Что пошло не так: выполнение задачи не выполнено:app:processDebugResources.

    Ошибка привязки ресурса Android C:\app\src\main\res\mipmap-anydpi-v25\ic_launcher_round.xml: error: элементам требуется версия SDK не менее 26.
    ошибка: не удалось связать файловые ресурсы.

Очевидно, у меня есть <adaptive-icon> ресурс в mipmap-anydpi-v25 папка.

Итак, какая версия AS обрабатывает это правильно; 3.2.1 или 3.3? Должен ли я удалить свой v25 значок? Я думал, что Lollipop имеет поддержку для этого типа иконок...

6 ответов

Решение

какая версия AS обрабатывает это правильно; 3.2.1 или 3.3?

Предположительно 3.3, поскольку в Android 8.0 были добавлены адаптивные иконки (API Level 26).

Должен ли я удалить значок V25?

Изменить каталог на mipmap-anydpi-v26/и вы все еще можете использовать этот значок для Android 8.0+. Если твой minSdkVersion ниже (и я предполагаю, что это так), вам понадобится альтернативная реализация иконки для старых устройств.

Я думал, что Lollipop имеет поддержку для этого типа иконок...

Lollipop - это Android 5.x, уровень API 21-22. Ваш -v25 каталог не будет использоваться для этих уровней API.

Для меня в AS 3.4 мне пришлось:

У меня не получалось использовать add New | Image Asset из-за адаптивных значков, ПОКА я не выполнил последний шаг по удалению SDK 25 из списка даже после попытки правильно выбрать Project SDK и Build Target.

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

У меня была такая же проблема, причина в том, что я перепутал файлы вручную, но я не заметил этого до обновления. В моем случае после обновления до AS 3.3 конфликтующие файлы были:

  • рисуем /ic_launcher_background.xml
  • вытяжка-V24/ic_launcher_foreground.xml

Хотя AS собирается без ошибок путем изменения min sdk "minSdkVersion 26" в app/build.gradle, это не практично для целей публикации.простое быстрое решение было:

  • создать пустой новый проект
  • скопировать точно такие же файлы
  • и заменить их в конфликтном проекте

Вот как я это исправил.

  1. Файл -> Структура проекта
  2. Выберите модули
  3. Измените SDK компиляции на API 26 выше (я думаю, необязательно)
  4. Выберите вкладку Default Config и измените целевую версию SDK на API 26 выше.

Он показывает ошибку, если у вас в SDK меньше 26 API.

Чтобы удалить старые API из SDK:

  1. Щелкните Файл.
  2. Выберите структуру проекта.
  3. Выберите SDK в настройках платформы.
  4. Справа проверьте, есть ли более старые API, показывающие API 26.
  5. Выберите "Старые API" и нажмите кнопку "Удалить" (-).

Удалите все более старые API, чем API 26. Нажмите Применить и ОК.

Это будет работать:)

Не тратьте время на минимальную версию SDK с 21 по 26: просто выполните следующие простые шаги:

  • Просто экспортируйте свой логотип в прозрачный формат SVG.

  • Прозрачный означает только часть логотипа без фона.

  • Импортируйте этот логотип в папку Android @drawable как векторный SVG.

  • В канале уведомлений, который вы используете для отправки уведомлений о статусе!

              val builder = NotificationCompat.Builder(context, "FIRE_BASE_NOTIFICATION")
     .setSmallIcon(R.drawable.transparent_logo)
     .setColor(ContextCompat.getColor(context, R.color.colorPrimary))
    

    Установите SmallIcon и установите цвет фона вашего логотипа.

В Android 11+, даже если вы добавите полноцветный логотип, он автоматически преобразует его в один простой цвет. Если вы не установите цвет фона, он будет отображать закрашенный серым круг. Это скроет вашу личность. Спасибо. Избавьтесь от этой проблемы, поскольку в Android 8.0 появились адаптивные значки (уровень API 26).

Другие вопросы по тегам