Search code examples
androidsplash-screenstylingandroid-12

windowSplashScreenAnimatableIcon not found


I want to customize my splash screen on Android 12 and I get the AAPT error:

AAPT: error: style attribute 'android:attr/windowSplashScreenAnimatableIcon' not found.

Here is the relevant part of the style:

<style name="SplashTheme" parent="@style/Theme.MaterialComponents.DayNight.NoActionBar">
    <item name="android:windowSplashScreenAnimatableIcon">@drawable/ic_splash</item>
</style>

That is the attribute mentioned in the documentation.

Here is an overview of the build tool libs I'm using:

compileSdk="android-S"
minSdk=21
targetSdk="S"
buildTools='31.0.0-rc4'

I use Android Studio Arctic Fox | 2020.3.1 Beta 1 just for the records.

Can someone point out what I'm doing wrong?


Solution

  • It seems that the documentation is wrong/outdated. The right attribute is:

    <item name="android:windowSplashScreenAnimatedIcon">@drawable/ic_splash</item>
    

    The correct attribute is listed in the R.attr class.


    In a previous version of this answer I had a way to keep the splashscreen working as before, however this does not work anymore.

    Today I suggest to use the splash compat library and this style:

    <style name="SplashTheme" parent="Theme.SplashScreen">
        <item name="windowSplashScreenBackground">@color/ic_launcher_background</item>
        <item name="windowSplashScreenAnimatedIcon">@drawable/ic_launcher_foreground</item>
        <item name="postSplashScreenTheme">@style/Your.Normal.Theme</item>
    </style>
    

    This has the two assumptions that you use a adaptive launcher icon with the default namings. In my case ic_launcher_background is a solid color this is why I'm using color instead of drawable prefix. I hope that helps others.

    Here is the guide for the splash migration from Google.