uni-app的启动页和图标由manifest.json静态配置与原生资源文件共同决定,错误位置、遗漏文件或未云打包是90%“不生效”问题的根源;splashscreen和icons必须置于app-plus节点下,路径须为static/相对路径,iOS需Storyboard且鸿蒙复用android字段。

直接说结论:uni-app 的启动页和图标不是靠写 Vue 代码控制的,而是通过 manifest.json 静态配置 + 原生资源文件共同生效;改错位置、漏放文件、没走云打包,90% 的“不生效”问题都出在这三处。
manifest.json 里 splashscreen 和 icons 怎么填才对
这两个字段必须放在 app-plus 节点下,不是根节点也不是 h5 或 mp-weixin。常见错误是把 splashscreen 写到全局或写成 "splashScreen"(大小写敏感)。
-
splashscreen必须包含autoclose(布尔值)、waiting(布尔值),以及android或ios子对象——鸿蒙也复用android字段 -
icons下的android字段支持mdpi/hdpi/xhdpi/xxhdpi/xxxhdpi;iOS 则需appstore(1024×1024)和iphone下的2x/3x(120×120 / 180×180) - 路径必须是相对
static/的,比如"static/icons/icon-192.png",不能写成"/static/..."或"./static/..." - Android 启动图推荐尺寸:xxhdpi 对应 1080×1920,xxxhdpi 对应 1440×2560;iOS 启动图建议按 iPhone X 尺寸(1125×2436)设计,再导出 @2x/@3x
为什么 iOS 必须用 Storyboard,而不能只配图片
从 iOS 13 开始,App Store 审核强制要求使用 LaunchScreen.storyboard,纯图片配置(splashscreen.ios.image)在真机上可能显示,但提交审核会被拒。这不是 uni-app 的限制,而是苹果系统级策略。
- HBuilderX 4.71+ 已将 iOS 启动页配置入口移到「iOS App 配置」可视化面板,但底层仍依赖你提供的
LaunchScreen.storyboard文件 - Storyboard 模板必须放在项目根目录的
launch-screen/文件夹下,且文件名严格为LaunchScreen.storyboard - 背景图命名有硬性规范:竖屏用
dc_launchscreen_portrait_background@2x.png,横屏用dc_launchscreen_landscape_background@2x.png,少一个@2x后缀就加载失败 - 暗黑模式适配靠
systemBackgroundColor或 Storyboard 中设置traitCollection,不要手动写死 hex 颜色值
Android 多密度启动图怎么放才不糊不拉伸
靠单一 PNG 图片适配所有机型必然变形。正确做法是准备多套 drawable 资源,而不是只塞一张图进 splashscreen.android.xxhdpi。
- 创建
nativeResources/android/src/main/res/目录结构,下设drawable-mdpi、drawable-hdpi、drawable-xhdpi等子目录 - 每个目录里放同名 PNG(如
splash.png),但尺寸按 Android 规范缩放:mdpi=480×800,xhdpi=720×1280,xxhdpi=1080×1920 - 必须在
nativeResources/android/src/main/res/values/styles.xml里声明android:windowBackground指向该图:@drawable/splash - 若要支持横竖屏不同启动图,建
values-land和values-port,分别配不同的styles.xml - .9.png 是可选方案,但需用 Android SDK 的
draw9patch工具制作,uni-app 不识别后缀名,只认文件内容是否含 .9 边框
改完配置为什么真机还是默认图标或白屏
最常被忽略的三个动作:没删 build 缓存、没勾选「使用原生资源」、没走云打包。
- 本地调试(运行到手机)不会读取
manifest.json的app-plus配置,只用于云打包或离线打包;想预览必须打正式包 - HBuilderX 打包时,「发行 → 原生 App-云打包」里务必勾选「鸿蒙」或「Android」平台,并确认「使用原生资源」已启用(尤其涉及
nativeResources时) - 改过
manifest.json后,HBuilderX 可能缓存旧配置,需手动清空项目下的unpackage/和build/目录再打包 - iOS 打包必须用 Mac + Xcode 归档,Windows 下只能生成 .ipa 包但无法签名上架;Storyboard 文件必须随包一起上传,否则回退到通用图标
真正卡住人的从来不是配置项本身,而是资源路径、打包流程、平台策略这三者的耦合——缺一不可,错一个就白忙活半天。


















