TargetSdk为34时Android SplashScreen自定义失效问题求助
Android 13+(API34)SplashScreen不生效问题排查方案
针对你遇到的启动屏颜色随深色模式变化、图标始终为启动器图标的问题,按以下步骤排查:
1. 确保正确调用installSplashScreen()(Jetpack Compose必做)
在Activity的onCreate方法中,必须在setContent之前调用installSplashScreen(),否则系统会 fallback 到默认启动屏:
class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // 关键:先安装启动屏 installSplashScreen() setContent { YourAppTheme { // 你的Compose内容 } } } }
2. 检查core-splashscreen依赖版本
使用适配API34的稳定版本,建议添加:
implementation "androidx.core:core-splashscreen:1.0.1"
(版本过低可能存在API34适配问题,避免使用测试版)
3. 修复启动屏主题配置
- 确认
windowSplashScreenBackground使用固定颜色值(避免随深色模式变化):
把@color/primary替换为具体色值(比如#FF6200EE),或检查values-night/colors.xml中是否意外修改了primary颜色。 - 验证自定义图标资源:
windowSplashScreenAnimatedIcon要求是有效的可绘制资源,SVG需确保正确导入(建议先用PNG图标测试,排除SVG兼容性问题),避免资源命名或路径错误。
4. 排除主题覆盖问题
- 检查Manifest中
<activity>标签是否单独设置了android:theme,如果有会覆盖application级别的启动屏主题,需移除或统一为@style/Theme.App.Starting。 - 确保
Theme.App.Starting的父主题是Theme.SplashScreen,不要继承其他Material主题。
5. 清理缓存并重装应用
执行以下操作确保资源生效:
- 执行
Build -> Clean Project+Build -> Rebuild Project - 卸载现有应用后重新安装(避免缓存残留)
内容的提问来源于stack exchange,提问作者AlexEZST
相关产品推荐
相关产品推荐

