Expo项目Android12/13启动时应用图标先于闪屏显示问题求助
修复Expo Android 12+ 启动时图标先于闪屏显示的问题
方法1:统一图标与闪屏的背景色配置
在app.json(或app.config.js)里,把自适应图标背景色、闪屏背景色、闪屏图标背景色设为一致,让系统过渡更平滑:
{ "expo": { "android": { "adaptiveIcon": { "foregroundImage": "./assets/adaptive-icon-foreground.png", "backgroundColor": "#你的闪屏背景色" }, "splash": { "image": "./assets/splash.png", "resizeMode": "cover", "backgroundColor": "#你的闪屏背景色", "showIcon": true, "iconBackgroundColor": "#你的闪屏背景色" } } } }
系统会用这个统一颜色作为过渡层,避免图标突兀跳出。
方法2:用Expo Splash Screen API手动控闪屏
如果默认配置失效,用expo-splash-screen库完全掌控闪屏隐藏时机:
- 先装依赖:
npx expo install expo-splash-screen
- 在入口组件(比如
App.js)里加控制逻辑:
import React, { useEffect, useState } from 'react'; import * as SplashScreen from 'expo-splash-screen'; // 阻止闪屏自动消失 SplashScreen.preventAutoHideAsync(); export default function App() { const [appReady, setAppReady] = useState(false); useEffect(() => { async function initApp() { try { // 这里放你的应用初始化逻辑,比如加载资源、请求接口等 await new Promise(resolve => setTimeout(resolve, 300)); // 模拟初始化耗时 } catch (err) { console.warn(err); } finally { // 应用准备好再隐藏闪屏 setAppReady(true); await SplashScreen.hideAsync(); } } initApp(); }, []); if (!appReady) return null; // 这里写你的应用内容 return <></>; }
这种方式能确保闪屏一直显示到应用完全就绪,不会提前切到图标。
方法3:更新Expo SDK到最新稳定版
旧版SDK可能存在Android 12+的适配漏洞,更新后大概率能修复这类问题:
npx expo upgrade
更新完成后重新构建Android应用验证效果。
方法4:清理缓存并检查资源规格
- 确认闪屏图片尺寸符合要求:Android建议
1242x2688(竖屏)或2688x1242(横屏) - 自适应图标前景图用
1024x1024尺寸 - 构建前清理缓存,避免旧配置残留:
npx expo prebuild --clean
内容的提问来源于stack exchange,提问作者Shivam
相关产品推荐
相关产品推荐

