Значок приложения отображается только в API21, но не работает в других API

У меня есть этот код в моем файле манифеста. Проблема, с которой я столкнулся, заключается в том, что значок отображается только в Android Lollipop (Api21, вкладка Asus Nexus). Я тестировал в Oreo (Oppo A3S) и Android P (Samsung Galaxy S10+), но значок не отображается. Однако изображения в MIP-карте выглядят нормально.

 <application
        android:name=".Application"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        tools:ignore="GoogleAppIndexingWarning">

Отображается только сплошной цвет (фон значка). Это как-то связано с изображениями в mipmap? потому что они хорошо выглядят. Даже превью значка рядом с номерами строк в манифесте выглядит нормально.

Я также заметил, что у меня есть только файл webp в моем mipmap-anydpi-v26, но в других приложениях есть 2 файла XML, один для раунда и обычный.


person Anirudh Ganesh    schedule 21.07.2020    source источник
comment
Отвечает ли это на ваш вопрос? Значок прежней версии не отображается при использовании адаптивного значка   -  person Aivaras    schedule 21.07.2020
comment
Нет. У меня есть mipmap-anydpi-v26, но в нем нет файлов XML. У него есть только файл webp. Я думаю, что я попробую удалить файлы mipmap и создать их снова.   -  person Anirudh Ganesh    schedule 21.07.2020


Ответы (2)


Вы должны правильно добавить значок запуска. Сначала удалите весь ваш ic_launcher и все его версии из mipmap. Теперь создайте новый актив изображения с типом значка в качестве значка запуска (только в устаревшей версии) или (адаптивной и устаревшей версии). Затем назовите его ic_launcher и выберите путь к изображению, установите отступы, цвет и т. д., затем нажмите «Далее» и завершите. Он автоматически примет актив в качестве значка запуска в манифесте. Если не установить его вручную.

android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
person Rajnish Sharma    schedule 21.07.2020
comment
Поэтому я поискал код обоих XML-файлов и обнаружил, что они содержат теги «adaptive-icon» вместе с тегами background и foreground. Каждый из тегов берет ссылку из drawable. Итак, у меня уже были launcher_foreground и launcher_background в папке с возможностью рисования. Но у меня также есть библиотека единства, импортированная в мой проект, и в ней также есть папки mipmap, из-за которых я теперь получаю значок единства, а не предполагаемый. Я подумываю удалить эти мип-карты и попробовать. В противном случае я бы удалил мип-карты и восстановил файлы. - person Anirudh Ganesh; 21.07.2020

Судя по всему, это произошло из-за отсутствия файлов XML внутри mipmap-anydpi-v26. У меня были оба XML-файла внутри drawable.

Поискал похожие файлы в других проектах и ​​узнал, что оба файла XML в основном содержат тег, за которым следуют теги фона и переднего плана внутри него.

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

Но удаление всех MIP-карт и их повторное создание в соответствии с https://developer.android.com/studio/write/image-asset-studio#create-notification также должен работать.

person Anirudh Ganesh    schedule 21.07.2020