图标不显示的最常见原因是icons未严格配置在app-plus→distribute→icons路径下;必须用static/开头的无alpha通道合规尺寸直角png,且云打包才生效。

manifest.json 中 icons 配置必须放在 app-plus 节点下
直接改错位置是“图标不显示”最常见原因。icons 不能写在根节点、h5 或 mp-weixin 下,必须严格嵌套在 app-plus → distribute → icons 路径里。拼错字段名(比如写成 icon 或 Icons)也会静默失效。
Android 和 iOS 的结构完全不同,不能混用:
- Android 图标走
icons.android,键名是密度标识:mdpi、hdpi、xhdpi、xxhdpi、xxxhdpi - iOS 图标走
icons.ios,键名是尺寸字符串:"appstore"、"iphone.2x"、"iphone.3x" - 所有路径必须以
static/开头,如"static/icon-192.png",不能带前导斜杠(/static/)、不能用assets/或src/
图标文件必须无 Alpha 通道且尺寸合规
iOS 审核会因透明通道直接拒审,报错 ITMS-90717;部分安卓机型(尤其华为、小米)显示时边缘发灰。务必用 Photoshop 或在线工具(如 remove.bg 后再另存为 PNG-24 去 Alpha)处理。
各平台关键尺寸不能漏:
- iOS:
appstore必须是1024×1024;iphone.2x是120×120;iphone.3x是180×180 - Android:
xxxhdpi推荐192×192(鸿蒙也只读这个);xxhdpi对应144×144;xhdpi对应96×96 - 所有图标必须是直角(非圆角),iOS 官方明确禁止圆角图标上架
静态资源路径大小写与扩展名必须完全匹配
文件系统区分大小写,Static/icon.png、static/Icon.PNG、static/icon.png?v=1 全部加载失败。HBuilderX 不报错,但云打包后真机就是默认图标。
检查要点:
- 文件真实存在于
static/目录下(不是src/static或unpackage/) - manifest.json 里写的路径和文件名(含大小写、
.png小写)一模一样 - 没加
@2x、@3x后缀 —— uni-app 不识别这种命名,只认字段名(如iphone.2x)
只有云打包才生效,本地调试看不到效果
无论你改得多对,只要没走「发行 → 原生 App-云打包」并勾选对应平台(Android/iOS/鸿蒙),图标就不会进原生包。HBuilderX 真机调试、本地运行、甚至离线打包(未勾选平台)都读不到 manifest.json 里的 icons 配置。
鸿蒙特别注意:它不读 icons.harmonyos,而是自动从 icons.android.xxxhdpi 取图;iOS 打包若漏传 Storyboard ZIP,图标可能显示,但启动页会 fallback 到白屏 —— 这不是 bug,是系统强制策略。
最容易被忽略的是:iOS 图标必须配全,漏一个尺寸(比如只配了 appstore 没配 iphone.3x),真机就直接回退到 HBuilder 默认图标,且没有任何提示。











