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, это не практично для целей публикации.простое быстрое решение было:
- создать пустой новый проект
- скопировать точно такие же файлы
- и заменить их в конфликтном проекте
Вот как я это исправил.
- Файл -> Структура проекта
- Выберите модули
- Измените SDK компиляции на API 26 выше (я думаю, необязательно)
- Выберите вкладку Default Config и измените целевую версию SDK на API 26 выше.
Он показывает ошибку, если у вас в SDK меньше 26 API.
Чтобы удалить старые API из SDK:
- Щелкните Файл.
- Выберите структуру проекта.
- Выберите SDK в настройках платформы.
- Справа проверьте, есть ли более старые API, показывающие API 26.
- Выберите "Старые 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).