APPICON.APPICONSET
AppIcon.appiconset,拖进 Xcode 即用。
AppIcon.appiconset 是 Xcode 资源目录里存放 iOS App 图标的文件夹,由一份 Contents.json 清单和一组按「设备 idiom + 逻辑尺寸 + 倍率」命名的 PNG 组成。本页讲清它的结构,并可一键生成完整、可直接拖入工程的图标集。
打开图标生成器(iOS 标签)生成器的 iOS 标签即产出 AppIcon.appiconset(含 Contents.json),全部在浏览器本地完成,不上传图片。
什么是 AppIcon.appiconset?
在 Xcode 里,App 图标不是散落的 PNG,而是一个名为 AppIcon.appiconset 的资源文件夹。它包含两部分:描述清单 Contents.json,和若干按「设备 idiom + 逻辑尺寸 + 倍率 scale」命名的位图。Xcode 读取 Contents.json,把每张图对应到正确的设备与场景(主屏、Spotlight、设置、App Store 等)。只要文件夹结构正确,拖进 Assets.xcassets 即可被工程识别。
iOS 图标尺寸对照表(现行规范)
下表为通用 iOS App 图标所需的完整清单;逻辑尺寸 × 倍率 = 实际像素。
| Idiom(设备) | 逻辑尺寸 | 倍率 | 像素 | 文件名 |
|---|---|---|---|---|
| ipad | 20x20 | 1x | 20 | icon-20.png |
| iphone | 20x20 | 2x | 40 | icon-20@2x.png |
| ipad | 20x20 | 2x | 40 | icon-20@2x.png |
| iphone | 20x20 | 3x | 60 | icon-20@3x.png |
| ipad | 29x29 | 1x | 29 | icon-29.png |
| iphone | 29x29 | 2x | 58 | icon-29@2x.png |
| ipad | 29x29 | 2x | 58 | icon-29@2x.png |
| iphone | 29x29 | 3x | 87 | icon-29@3x.png |
| iphone | 40x40 | 2x | 80 | icon-40@2x.png |
| ipad | 40x40 | 2x | 80 | icon-40@2x.png |
| iphone | 40x40 | 3x | 120 | icon-40@3x.png |
| iphone | 60x60 | 2x | 120 | icon-60@2x.png |
| iphone | 60x60 | 3x | 180 | icon-60@3x.png |
| ipad | 76x76 | 1x | 76 | icon-76.png |
| ipad | 76x76 | 2x | 152 | icon-76@2x.png |
| ipad | 83.5x83.5 | 2x | 167 | icon-83.5@2x.png |
| ios-marketing | 1024x1024 | 1x | 1024 | icon-1024.png |
Contents.json 长什么样
Contents.json 用 images 数组把每个 idiom / 尺寸 / 倍率映射到一个文件名,info 标注版本与作者。下面是与本工具输出一致的示例(节选):
{
"images" : [
{ "idiom" : "iphone", "size" : "20x20", "scale" : "2x", "filename" : "icon-20@2x.png" },
{ "idiom" : "iphone", "size" : "60x60", "scale" : "3x", "filename" : "icon-60@3x.png" },
{ "idiom" : "ipad", "size" : "76x76", "scale" : "2x", "filename" : "icon-76@2x.png" },
{ "idiom" : "ios-marketing", "size" : "1024x1024", "scale" : "1x", "filename" : "icon-1024.png" }
],
"info" : { "version" : 1, "author" : "tushuo" }
}filename 必须与文件夹内实际 PNG 名一致;同一张图可被多个 idiom 复用(例如 40@2x 同时用于 iPhone 与 iPad 的 Spotlight)。
图标不显示 / 构建报错时怎么查
iOS 图标的坑几乎都集中在三处:文件名、尺寸和 App Icon 名称。按下面顺序排查基本都能定位。
| 症状 | 原因 | 处理 |
|---|---|---|
| 主屏图标空白 / 出现默认占位图 | Target 里勾选的 App Icon 名称与文件夹名不一致 | 把文件夹命名为 AppIcon.appiconset,并在 Target → General 中确认名称也是 AppIcon |
| 构建报 unassigned child | Contents.json 里 filename 指向的文件实际不存在 | 逐条核对 filename 与文件夹内 PNG,大小写必须完全一致 |
| 图标边缘被裁掉 / 圆角不对 | PNG 本身带圆角或留白,系统又裁了一次 | 源图应为不透明正方形满幅、不带圆角与阴影,系统会自动切形状 |
| 1024 上传被 App Store 拒绝 | 营销图带 alpha 通道或尺寸不是精确 1024×1024 | 导出为无 alpha 的 RGB PNG,尺寸严格 1024×1024 |
| 改了图标但模拟器没更新 | Asset Catalog 缓存 | Product → Clean Build Folder 后重跑,或删掉 AppIcon 后重新拖入 |
如何导入 Xcode
- 下载 ZIP 并解压,得到 AppIcon.appiconset 文件夹。
- 在 Xcode 打开工程,定位到 Assets.xcassets。
- 把整个 AppIcon.appiconset 文件夹拖入 Assets.xcassets(替换已有的 AppIcon)。
- 在 Target → General → App Icons and Launch Screen 里确认 App Icon 名称为 AppIcon。
- 运行到模拟器 / 真机,主屏图标即生效;上传 App Store 时会使用 1024 营销图。
常见问题
Contents.json 可以省略吗?
不行。没有 Contents.json,Xcode 无法把 PNG 对应到 idiom / 尺寸 / 倍率,资源目录会报错或图标不显示。它相当于 appiconset 的「索引」。
为什么有的尺寸看起来重复(如 40@2x 与 60@2x 都是 120px)?
逻辑尺寸不同但像素相同:40pt@2x 与 60pt@2x 都是 120px,只是用途不同(Spotlight 与主屏)。Contents.json 里它们是两个条目,可指向同一张图。
需要为深色 / 着色模式单独做图标吗?
iOS 18 起支持深色与着色外观,属可选项。可在同一 AppIcon.appiconset 的 Contents.json 里用 appearances 声明,或像本工具那样另出 AppIcon-dark / AppIcon-tinted 文件夹备用。
图片会上传到服务器吗?
不会。生成与打包全部在浏览器本地完成,原图不会离开你的设备。