Search code examples
androidlauncherandroid-8.0-oreo

app launcher icon changed to default icon on Oreo


I have created an Android app with its own launcher icon. It worked well with Nougat. But with Oreo, my icon is replaced by the default Android icon. I have defined ic_launcher.png and ic_launcher_round.png in the mipmap resources for several densities.

My manifest contains the following line:

android:roundIcon="@mipmap/ic_launcher_round"

What should I do to make my own icon appear on Oreo ?


Solution

  • For API 26+ default Android application template defines another icon resource folder

    mipmap-anydpi-v26

    That folder (usually) contains two xml files ic_launcher and ic_launcher_round that match icon resources declared in manifest for API 26+

    Content of those files looks like following:

    <?xml version="1.0" encoding="utf-8"?>
    <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
        <background android:drawable="@drawable/ic_launcher_background"/>
        <foreground android:drawable="@drawable/ic_launcher_foreground"/>
    </adaptive-icon>
    

    In order to have your icon you also need to change all drawables (in all density buckets) listed there - namely ic_launcher_background and ic_launcher_foreground

    Or you can just delete that folder, in which case android will fallback to using your png icons, but they will not appear as-is and will be commonly drawn on top of white background.

    You can read more at: Adaptive icons