删掉 static/splash.png 可取消云打包默认启动页,但离线打包需修改原生工程资源或配置;云打包下删除后需清缓存并上传,且 manifest.json 中 imagePath 需清空;离线打包需分别处理 Android 和 iOS 原生资源与配置。

直接删掉 static/splash.png 就能取消默认启动页图片,但仅对云打包生效;离线打包必须改原生工程资源或配置。
云打包下删图就完事
UniApp 云打包时,启动页逻辑会主动查找 static/splash.png。如果文件不存在,就不会显示任何启动图(也不会 fallback 到黑屏或白屏,前提是其他配置合理)。
- 确认项目根目录下没有
static/splash.png—— 直接删除即可 - 删完后务必清缓存、重新上传云端打包,否则 HBuilderX 可能读取旧缓存
- 删图后若仍看到启动图,说明 manifest.json 里显式指定了
imagePath,需一并清空该字段或设为""
离线打包必须动原生工程
云打包的配置在离线打包中基本失效。Android 和 iOS 各有一套原生机制,manifest.json 的 splashscreen 配置不起作用。
- Android:进入
native/android/app/src/main/res/,删掉所有drawable-*/ic_splash.*或类似命名的启动图资源(常见于drawable-v21和drawable-v31) - iOS:打开
native/ios/Podfile所在工程,在 Xcode 中找到LaunchScreen.storyboard,删掉其中的UIImageView,或将其Image属性清空,并确保背景色设为纯色(如#FFFFFF) - 改完必须用 Xcode / Android Studio 重新编译原生工程,不能只靠 HBuilderX “运行到手机”
manifest.json 配置别乱设 delay
splashscreen.delay 在 HBuilderX ≥4.20 版本已废弃,写了也无效。真正影响启动图行为的是这三个布尔值:
-
autoclose: false—— 必须关掉,否则系统会在首页 JS 渲染完成瞬间强制关闭,你根本来不及控制 -
alwaysShowBeforeRender: false—— 关掉可避免首页白屏闪一下才出内容 -
waiting: false—— 关掉雪花图标,但仅对云打包和部分离线场景有效,iOS 原生层的转圈无法靠它消除
App.vue 里手动关 splash 的时机很关键
即使你删了图、关了 waiting,某些设备(尤其 iOS)仍可能短暂闪一下黑屏或白屏——这是因为原生启动图退场和 Vue 首屏渲染存在竞态。
- 必须在
onLaunch里用setTimeout调用plus.navigator.closeSplashscreen() - 时间建议 1500–3000ms:太短用户感觉“没过渡”,太长 iOS 会在 6000ms 强制关且不触发你的回调
- 别写在
onShow或页面生命周期里——那时 splash 早被系统回收了,调用无效
最麻烦的其实是 Android 12+ 的 SplashScreen API,它完全绕过 uni-app 控制,哪怕你删光所有图、关掉所有配置,系统仍可能显示带图标缩放的默认动画。这时候只能进 android/app/src/main/res/values/themes.xml 改 android:windowSplashScreenBackground 和 android:windowSplashScreenAnimatedIcon —— 这已经不是 uni-app 层面能解决的事了。


















