안드로이드 12에서는 SplashScreen API가 추가되었습니다.(참고: 안드로이드 스플레시화면 공식문서)
SplashScreen API는 앱 상태(콜드 스타트, 웜 스타트, 핫 스타트)에 따라 실행되는데 안드로이드 12부터는 강제적으로 적용해야합니다.
하지만 이 API가 제한적이라 자유로운 Splash 화면 커스텀이 어려워졌고, 비활성화 시키는 옵션은 현재기준(2022.05.02) 나오지 않았습니다.
그래서 전 splash 창 중앙의 아이콘을 투명으로 처리하여 splah를 실행시키고, 그 다음에 저희가 적용한 splah 화면을 띄우는 것으로 해결하였습니다.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@android:color/transparent"/>
</selector>
나중에 splash api를 사용할 경우에 띄울 아이콘은 launch_background.xml에 그대로 두고, 현재는 아이콘이 표시되지 않도록 하기위해 투명한 배경을 만들었습니다.
<style name="LaunchTheme" parent="Theme.SplashScreen">
...
<item name="windowSplashScreenAnimatedIcon">@drawable/launch_transparent</item>
...
</style>
styles에 Splash 화면 테마를 적용하는 법은 공식문서 -> 스플래시 화면 테마를 설정하여 모양 변경
을 참고하였고, windowSplashScreenAnimatedIcon에 만들어둔 launch_transparent.xml을 적용하였습니다.