uni-app无自动生成引导页,所谓“引导页”均为开发者手动编写的Vue页面(如pages/guide/guide.vue),原生splash仅为静态图/视频,不可交互;关闭分两类:跳过Vue引导页需用uni.getStorageSync('launchFlag')===true判断并立即跳转,同时设为true标记;禁用原生splash需配置manifest.json中autoclose:false并手动调用plus.navigator.closeSplashscreen()。

uni-app 没有“自动生成的引导页”,只有原生 splash 和你手动写的 Vue 引导页
很多人搜“uni-app 关闭引导页”,其实是被误导了——uni-app 本身不提供、也不自动生成任何可交互的引导页。所谓“引导页”全是开发者自己用 Vue 页面写的(比如 pages/guide/guide.vue),而系统级出现的,只有原生 splash 图(静态图/视频),它由 manifest.json 或 pages.json 配置控制,不能执行 JS、不能跳转、不能判断逻辑。
所以“关闭引导页”实际分两类:
- 关掉你写的 Vue 引导页(靠缓存标记 + 跳转)
- 关掉原生 splash(靠配置 + 手动调用
plus.navigator.closeSplashscreen())
怎么让首次启动直接跳过 Vue 引导页
核心是用 uni.getStorageSync('launchFlag') === true 做判断,且必须在引导页的 onLoad 里立刻执行跳转,不能等异步回调。
- 别用
uni.getStorage(异步),否则页面白屏或闪退 - 标记值必须是布尔
true,不是字符串"true"或数字1,否则首次进引导页后,下次仍会进 - 跳转后必须立刻
uni.setStorageSync('launchFlag', true),否则每次冷启都重进 - 引导页要设为
pages.json中第一个页面路径,否则 splash 关闭后可能先闪首页再跳引导页
怎么彻底禁用原生 splash(App 端)
如果你根本不想显示任何启动图,不是“跳过”,而是“压根不要”,就得从打包配置入手:
- 删掉
static/splash.png(iOS/Android 默认 splash 图) -
manifest.json→ App 启动界面配置 → 取消勾选“启用启动界面” - 离线打包时,
manifest.json的配置可能不生效,需额外检查nativePlugins是否注入了 splash 插件(如uni-splash-screen),有就删掉 - 云打包下,“是否显示等待雪花”勾选项必须关掉,否则即使没图也会显示加载动画
为什么 plus.navigator.closeSplashscreen() 有时无效
这个 API 只在 App 端有效,且受两个硬性限制:
-
autoclose必须设为false,否则引擎自动关 splash,你调用也白搭;修改位置在manifest.json的app-plus.splashscreen.autoclose - 调用时机不能晚于 6 秒,超时后引擎强制关闭,且此时页面可能还没 mount,
plus对象还不可用 - H5、小程序端无
plus对象,直接报plus is not defined,必须加运行环境判断:if (uni.getSystemInfoSync().platform === 'app') - 某些 Android 厂商 ROM(如华为 EMUI)会拦截 splash 关闭,需配合
alwaysShowBeforeRender: false使用
最易忽略的一点:splash 和 Vue 页面之间的空档期无法完全消除,哪怕你立刻调用 closeSplashscreen,首帧渲染慢的设备仍会闪白屏——这时首帧图和 splash 图必须像素级一致,否则“无缝”就是空谈。


















