应用图标曾经意味着要为每个设备像素尺寸导出十五张 PNG。现代 Xcode 只需要一张——1024×1024 的 PNG——并自动生成其余所有尺寸。本教程介绍如何让这张图片符合 App Store 上架要求、资源目录的使用流程,以及那个会让构建在上传时静默被拒的常见错误。
你可以用三句话让 AI 智能体替你完成这件事("给这个项目添加应用图标,使用 ~/Desktop/icon.png 作为源图片"),通常一次就能成功。本教程存在的意义,是为了当出现问题时——通常是上传被拒——你需要了解资源目录实际期望的格式。一旦你理解了问题的本质,智能体的操作就不再是魔法了。
AppIcon.appiconset 在磁盘上究竟是什么结构当你在 Xcode 项目导航栏中看到 Assets.xcassets 时,它并非单个文件——而是磁盘上的一个目录。在其中,你添加的每一张"图片"都有自己的子目录,包含实际的 PNG 文件和一个小型 Contents.json,用于告知构建系统哪个文件对应哪种尺寸、缩放比例和设备类型(iPhone、iPad、Mac 等)。
对于应用图标,该目录命名为 AppIcon.appiconset。旧版流程中,它会包含约 15 张覆盖所有设备像素尺寸的 PNG。自 Xcode 14 起,现代流程支持"单一尺寸"模式:只需放入一张 1024×1024 的 PNG,工具链会在构建时自动生成每个较小的变体。你不需要交付 15 个文件——只需一个。
这正是"用这张图片作为应用图标"这类提示词对智能体如此奏效的根本原因——只需写入一个文件,编辑一个 Contents.json。
你的 1024×1024 源 PNG 需要满足三个条件:
另外:不要提前圆角化。iOS 和 macOS 会应用各自的圆角蒙版(不同平台、不同设备家族的圆角半径各有差异)。如果你交付一个已经圆角化的正方形,最终会得到一个"双重圆角"的效果,在所有设备上看起来都不对劲。请交付完整的正方形;操作系统会完成剩余的处理。
sips -s format png --setProperty hasAlpha no icon.png --out icon-flat.png。
LingCode 提供了一个专用面板,可在一个窗口内完成整个流程——生成源图片、调整为所有必要尺寸、写入资源目录。从菜单栏选择 Mobile → App Icon Generator…。
你有两种方式提供源图片:
generate_image 工具或其他来源的 1024×1024 PNG,点击主图片槽位并选取文件即可。然后选择目标目录——iOS 槽位指向项目的 Assets.xcassets/AppIcon.appiconset/,Android 槽位指向 app/src/main/res/(关闭不需要发布的平台即可)。点击生成。面板会列出写入的所有文件,以便你确认输出是否落到了正确的文件夹中。
该面板底层使用 LingCode 内置的 AppIconGeneratorService——纯 Core Graphics 实现,无需外部工具。iOS 通道会生成包含所有必要尺寸的完整 AppIcon.appiconset;Android 通道会在每个密度分组下写入 ic_launcher、ic_launcher_round 和自适应 ic_launcher_foreground(详见 Android 自适应图标教程)。
在项目中打开 Claude 对话,输入:
Add an app icon to this project. Use ~/Desktop/icon.png as the source image.
Use the modern single-size asset catalog flow (one 1024×1024 image).
智能体会将文件复制到 YourApp/Assets.xcassets/AppIcon.appiconset/icon.png,并重写 Contents.json 以声明单个 1024×1024 的通用条目。两处修改都会显示在差异视图中,可以方便地撤销。
还没有源图片?对话本身接入了 Gemini 图像模型的图片生成工具。输入"生成一个 1024×1024 的应用图标:深海军蓝背景上的金色几何太阳,扁平设计",智能体会将结果保存到 <project>/assets/<slug>.png,并在对话中内联引用,方便你迭代。此功能需要你自己的 Gemini API 密钥(设置 → API Keys → Gemini)。满意后,让智能体将其接入资源目录——或打开应用图标生成器面板并指向生成的文件。
验证方法:在 Xcode(或 LingCode 的资源浏览器)中打开 Assets.xcassets,点击 AppIcon。你应该看到图片显示在一个大的单一槽位中,而不是分散在设备专属槽位的网格里。这就确认了单一尺寸模式已开启。
同样的流程,逐步点击完成。当某些设置发生偏移而差异不明显时非常有用。
Assets.xcassets。在左侧边栏选择 AppIcon 条目。如果槽位提示"Image dimensions don't match expected size",说明源图片不是精确的 1024 正方形。如果提示 alpha 相关问题,请参见第二步的警告框。
如果图标未出现或无法发布,几乎总是下面两种情况之一:
| 症状 | 原因 | 修复方法 |
|---|---|---|
| 构建并安装成功,但启动台显示通用灰色应用图标 | 资源目录中有图片,但项目构建设置未将 AppIcon 设为图标来源。 |
项目 Target → Build Settings → 搜索"ASSETCATALOG_COMPILER_APPICON_NAME"。值应为 AppIcon。若为空,设置它。 |
| App Store Connect 上传被拒,提示"alpha channels or transparencies" | 1024×1024 源 PNG 包含 alpha 通道——即使看起来完全不透明,通道本身就是问题所在。 | 参见第二步的警告框:用 sips 或"预览"的"取消勾选 Alpha"导出来合并图层,替换文件,归档并重新上传。 |
两种问题用智能体排查都只需 30 秒:将拒绝邮件或启动台症状粘贴到对话中,它会帮你检查 Contents.json 和构建设置。