Vraag Legacy-pictogram wordt niet weergegeven bij gebruik van het aanpassingspictogram


Ik heb zojuist mijn app-pictogram geconverteerd om compatibel te zijn met android o's adaptieve pictogrammen met behulp van de Image Asset Studio in android studio

wanneer ik mijn project nu op mijn apparaat met API 25 uitvoer, krijg ik het standaard groene android-pictogram en niet mijn pictogram.

dit is mijn manifest

<application
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme"
    android:allowBackup="false"
    android:roundIcon="@mipmap/ic_launcher_round"
    tools:replace="allowBackup"
    tools:ignore="GoogleAppIndexingWarning">

en dit zijn de bestanden die de image-activastudio heeft gemaakt

enter image description here

Is dit gewoon een Android Studio-bug of heb ik iets gemist?


13
2018-06-08 20:49


oorsprong


antwoorden:


Ik had hetzelfde probleem en loste het op door mijn naam te wijzigen mipmap-anydpi map naar mipmap-anydpi-v26.

Blijkbaar is het ic_launcher.xml bestand verwart oudere Android-versies, en dit verbergt het van alle, behalve O. Mijn pictogrammen werken in ieder geval nu op alle versies (tot minimaal SDK 11).


23
2018-06-10 18:03



Oplossing is hebben mipmap-anydpi-v26/ic_launcher.xml voor adaptieve pictogrammen die van toepassing zijn voor API level 26 en hoger en voor andere API-levels gezet ic_launcher.png (Opmerking: niet ic_launcher.xml) in alle mimpap-mappen.


Uitleg:

Dit is het fundamentele probleem mipmap-anydpi hebben voorrang op alle andere mipmap-*. Dus als bron wordt gevonden in mipmap-anydpi het zal altijd de voorkeur hebben. Nu mipmap-anydpi-v26 is een filter daarboven met bronnen van mipmap-anydpi-v26 zal altijd worden gekozen, ongeacht de dichtheid van de apparaten alleen als API-niveau 26 of hoger is (Oreo).

Nu manifesteert u het android:icon="@mipmap/ic_launcher"

Als je apparaat API-niveau 26 of hoger heeft en Android zal kiezen om te gebruiken mipmap-anydpi-v26/ic_launcher.xml en alles werkt goed.

Het probleem treedt op wanneer het API-niveau minder dan 26 is. Android-statistieken zoeken naar naam met bron ic_launcher. Het zal nooit gaan en erin zoeken mipmap-anydpi-v26 vanwege beperkingen op API-niveau. Vervolgens zou het zoeken naar de bron in mipmap-anydpi en zo niet, dan is de feitelijke dichtheid van bronnen Eg. mipmap-mdpi.

Vervolgens kun je niet geven ic_launcher.xml voor Android-apparaten minder dan sdk 26 omdat het niet weet wat adaptieve pictogrammen zijn.

Dus de oplossing is om te hebben mipmap-anydpi-v26/ic_launcher.xml voor adaptieve pictogrammen die van toepassing zijn voor API level 26 en hoger en voor andere API-levels gezet ic_launcher.png (Opmerking: niet ic_launcher.xml) in alle mimpap-mappen.


2
2017-07-04 10:25



Als het nog steeds niet werkt, controleer dan je XML-schema, als je auto-import vanuit Android Studio gebruikt, zal het niet werken, het zou / apk / res / android moeten zijn. Hier is de code:

<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
  <background android:drawable="@mipmap/ic_launcher_background"/>
  <foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>

0
2017-07-26 08:26