编辑器里的图标预览正常,但 TestFlight 安装后仍显示旧图标,通常不是设计稿出错,而是文件关联、Target 配置或最终构建产物没有切换。
最快解法:新项目可以直接采用 Icon Composer;已有 App 不要立刻删除 AppIcon,先在独立分支完成新旧系统渲染、模拟器、真机、Archive 和 TestFlight 四层验收。
最后更新于 2026 年 8 月 29 日。本文涉及的 Xcode 27 状态、Icon Composer 系统要求和发布流程,核实自 Apple 的 Xcode 发布记录、Icon Composer 官方页面 和 Xcode 图标接入文档。
这篇适合 3 类人:
- 正在为 iOS 27 或 macOS 27 准备新图标,需要建立从设计文件到发布构建的完整验收链路。
- 正在维护已有
AppIcon资产,不确定应该替换、保留,还是先做双轨验证。 - 使用远程 Mac 或自动打包环境,希望确认
.icon文件能被同步、编译和归档。
01 4 类图标资源与接入边界
Icon Composer 接入失败,常见原因不是“文件没有导入”,而是把设计源文件、构建资源和营销素材混成了同一个概念。
| 资源 | 主要职责 | 是否等于最终 App 图标 |
|---|---|---|
| 设计源文件 | 保存 SVG、PNG、图层和原始视觉结构 | ❌ 不是 |
| Icon Composer 文件 | 保存分层结构、平台变体及 Default、Dark、Mono 外观 | ❌ 不是单纯营销图片 |
AppIcon 资产目录 |
传统 Xcode 图标资源,可为旧系统提供原始视觉效果 | ❌ 取决于 Target 配置 |
| App Bundle 内资源 | 构建后随应用分发,设备和 TestFlight 实际读取 | ✅ 是发布验收对象 |
Apple 的接入文档说明,Icon Composer 可以用多层文件表示不同平台和外观;将 .icon 文件加入 Xcode 后,它可能替代原先用于表示 App 图标的资产目录。如果旧系统必须继续显示原始图标,应保留传统资产目录并单独验证。
你需要特别防范 3 个限制:
-
文件进入 Project navigator,不代表进入构建。
Target Membership 未勾选时,本地可以打开文件,但 Archive 可能完全不包含它。 -
文件名与 Target 设置必须对应。
Target 中的 App Icon 名称应匹配.icon文件名,通常不包含扩展名。项目存在多个图标文件时,名称错误会导致构建继续读取其他资源。 -
预览、设备图标和商店素材属于不同验收层。
Icon Composer 画布只证明编辑器能够渲染。设备桌面读取安装包资源,TestFlight 和 App Store Connect 还涉及构建处理及发布关联。
02 新项目的 Icon Composer 接入路径
分层素材准备
优先从分层 SVG 开始。文字应转换为轮廓,避免远程构建节点缺少对应字体。若使用 PNG,应确认图片中没有提前烘焙系统会再次处理的阴影、模糊或高光。
建议将背景、主体、文字和装饰拆成独立图层。不要提前加入最终遮罩,也不要把所有视觉效果合并为一张图片。这样才能分别检查 Default、Dark 和 Mono 外观。
官方示例中,iPhone、iPad 和 Mac 常见画布为 1024 × 1024,Apple Watch 示例为 1088 × 1088。这些是官方示例尺寸,不应当被理解为所有平台唯一可用的强制尺寸。图层组织通常建议控制在 4 个组以内,便于后续调整和排查。
文件创建与 Target 关联
新项目可以采用下面的最短路径:
- 将 SVG 或 PNG 图层导入 Icon Composer。
- 在画布中分别查看 Default、Dark 和 Mono。
- 只启用项目真正支持的平台,避免误把其他平台变体当成 iOS 结果。
- 保存为明确的
.icon文件,例如AppIcon.icon。 - 将文件加入 Xcode Project navigator。
- 在 Target 的 General 设置中检查 App Icon 字段。
- 确认字段值与文件名一致,且没有误指向旧资源。
- 在 File inspector 中确认 Target Membership。
- 先运行模拟器构建,再查看安装后的桌面图标。
如果你使用 Finder 拖入文件,还要确认文件是否复制到了项目目录。远程构建时尤其要检查 Git 工作区中是否真的存在该文件,而不是只有本地工程引用。
03 存量 App 的替换与保留
旧 AppIcon 的保留策略
用了 Icon Composer 后,仍然可以保留旧 AppIcon,但“文件还在项目里”不等于“构建仍然使用它”。
存量项目应建立独立迁移分支:
- 主分支继续保留当前
AppIcon。 - 升级分支加入 Icon Composer 文件。
- 第一次构建不要删除旧资源。
- 对比最低部署版本设备上的图标。
- 对比新系统的 Default、Dark 和 Mono。
- 完成 Archive 和 TestFlight 后,再决定是否合并。
如果产品必须维持旧系统上的原始品牌图标,继续使用资产目录通常更容易控制。如果项目接受自动生成的兼容图标,再考虑切换到 Icon Composer。不要在没有截图、构建号和回退提交的情况下直接删除旧资源。
如果项目包含主 App、Widget、Notification Extension 或 macOS Target,还要逐个检查图标配置。主 Target 通过,不代表其他 Target 会自动得到同样结果。
低版本 iOS 的显示差异
低版本系统可能不会提供与新系统完全相同的图标外观或材质。构建工具可能根据 Icon Composer 文件生成面向旧系统的兼容图标,因此视觉不同不一定表示构建失败。
你需要判断的是:
- 主体轮廓是否仍然可识别。
- 文字或关键符号是否被裁切。
- 深色背景下是否失去边界。
- 图标是回退到了旧
AppIcon,还是使用了自动生成版本。 - 差异是否已经超过产品可接受范围。
若旧版用户必须看到原始图标,建议把传统资产目录保留到迁移完成。传统图标还可以针对 Light、Dark 和 Tinted 外观提供不同资源,适合对旧系统显示结果要求较高的项目。相关配置可参考 Xcode 的 App 图标配置说明。
04 多平台项目的设计检查
Icon Composer 的优势是共享分层结构,但共享文件不代表所有平台都应该完全相同。
同一套图层在 iPhone、iPad、Mac 或 Apple Watch 上可能出现不同问题:
- 圆角或外框比例改变。
- 主体在遮罩后显得过小。
- Mac 上细节清楚,iPhone 桌面上却无法识别。
- Apple Watch 上的细线和小文字消失。
- Dark 或 Mono 外观压低颜色层次。
- 平台专属安全区域导致主体被裁切。
因此应区分“共享图层结构”和“平台专属调整”。可以共享背景、主体和品牌符号,但不必为了保持一个文件结构而牺牲某个平台的识别度。
同时,不要根据 Icon Composer 支持多平台,就自行推断所有 Apple 平台都适用同一流程。visionOS 等目标应继续按照对应官方规范处理,不要把未确认的平台支持写成确定结论。
05 远程 Mac 与自动构建环境
工具链检查
截至 2026 年 8 月 29 日,Icon Composer 独立下载页面要求运行在 macOS Tahoe 26.4 或更高版本。当前发布记录显示 Apple 已发布 Xcode 27 beta 6,版本号为 27A5252f,发布日期为 2026 年 8 月 24 日;正式版状态仍应以后续发布页为准。不要把 Beta 行为当成最终提交规则。
远程 Mac 或自动构建节点至少检查以下项目:
- macOS 是否满足 Icon Composer 的系统要求。
- Xcode、SDK 与项目部署目标是否匹配。
.icon文件是否进入版本控制。- 工程引用是否使用稳定路径。
- Target Membership 是否在远程工作区一致。
- Scheme 是否指向预期 App Target。
- Bundle ID、签名配置和 Archive 目标是否正确。
- 构建脚本是否运行在正确的项目目录。
找不到 Icon Composer 文件的排查顺序
远程构建时找不到文件,不要先清空所有缓存。按层排查更快:
- 文件层:确认 Git 工作区实际存在
.icon文件。 - 工程层:检查 Xcode 工程是否存在有效文件引用。
- Target 层:检查 Target Membership 和 App Icon 字段。
- Scheme 层:确认 Archive 使用的 Target 与本地一致。
- 工具链层:记录 macOS、Xcode 和 Icon Composer 版本。
- 日志层:保留
actool、ibtool和 Archive 日志。 - 产物层:解包
.xcarchive或导出 App,检查最终 Bundle 中的资源。
如果构建节点没有图形界面,重点不是能否打开 Icon Composer,而是 Xcode 的非交互式 Archive 能否正确读取已经纳入项目的文件。首次迁移建议先手动构建一次,再运行命令行 Archive,避免把工程引用错误和环境问题混在一起。
06 模拟器、真机、Archive 与 TestFlight 清单
模拟器验收
- [ ] 安装新构建后,桌面图标不再是旧
AppIcon。 - [ ] Default 外观下主体轮廓清楚。
- [ ] Dark 外观下边界和对比度足够。
- [ ] Mono 外观下仍能识别品牌主体。
- [ ] 使用最低部署版本对应的模拟器记录兼容差异。
- [ ] 多平台 Target 分别安装,不只测试主 App。
真机验收
- [ ] 使用新系统设备检查外观切换。
- [ ] 使用最低部署版本范围内的设备或测试环境检查兼容图标。
- [ ] 从主屏幕、搜索、设置等位置观察图标。
- [ ] 检查浅色、深色和常用辅助显示设置。
- [ ] 记录裁切、模糊、透明度异常和主体过小等问题。
- [ ] 保存设备型号、系统版本和截图。
系统可能对图标应用额外的视觉效果。如果设计稿已经包含阴影、模糊或高光,实际显示可能出现叠加。必须在 Simulator 或真机上查看结果,不能只依据设计工具预览。
Archive 与 TestFlight 验收
- [ ] 使用发布配置完成 Archive。
- [ ] 检查 Scheme、Bundle ID、版本号和 Build 字符串。
- [ ] 确认 App Icon 设置指向预期
.icon文件。 - [ ] 解包 Archive,确认 Bundle 内不是旧图标资源。
- [ ] 保存资源编译和归档阶段日志。
- [ ] 上传新的 Archive 并等待构建处理。
- [ ] 安装 TestFlight 版本,而不是直接运行 Xcode 调试版本。
- [ ] 删除旧安装后重新安装,避免缓存造成误判。
- [ ] 检查 TestFlight 页面和设备桌面是否显示预期图标。
- [ ] 记录构建号、设备、系统版本和截图。
App Store Connect 会根据 Bundle ID、版本号和 Build 字符串关联上传构建。上传成功不等于构建已经处理完成,也不等于可以直接提交审核。若构建长期处于 Processing,超过 24 小时仍未完成,就应查看处理状态和错误信息,而不是重复上传相同 Archive。具体状态可参考 App Store Connect 的构建上传状态说明。
07 三组最终决策表
| 项目类型 | 推荐方案 | 主要原因 | 切换条件 |
|---|---|---|---|
| 全新 iOS App | 直接采用 Icon Composer | 没有历史 AppIcon 兼容负担 |
四层验收全部通过 |
| 已有 App,接受视觉变化 | 升级分支切换 | 便于统一管理多外观 | 最低部署版本结果可接受 |
| 已有 App,必须保留旧视觉 | 继续保留资产目录 | 更容易控制旧系统显示 | 旧资源仍被正确引用 |
| 多平台 App | 共享分层设计,平台单独验收 | 共享结构不等于共享比例 | 每个平台都有截图记录 |
| 自动构建或远程 Mac | 版本控制 .icon 并做非交互式 Archive |
避免本地独有文件导致失败 | 干净工作区可重复构建 |
| 检查对象 | 通过标准 | 未通过时的动作 |
|---|---|---|
| Icon Composer 文件 | 文件存在,路径稳定 | 检查 Git、工程引用和同步脚本 |
| Target 配置 | App Icon 名称与文件名一致 | 修正名称或 Scheme 指向 |
AppIcon 资产 |
明确保留或明确移除 | 不要让两套资源处于未知状态 |
| 低版本图标 | 主体清楚,偏差可接受 | 继续资产目录或调整兼容设计 |
| Archive 产物 | Bundle 资源与预期一致 | 保留日志并回退 |
| TestFlight | 安装后图标正确 | 检查上传构建和处理状态 |
| 发布记录 | 有构建号、设备、系统和截图 | 补齐证据后再提交 |
| 你的情况 | 更适合的选择 | 不建议的做法 |
|---|---|---|
| 新项目,没有历史图标要求 | Icon Composer | 再创建一套旧资产目录重复维护 |
| 存量 App,用户量较大 | 双轨验证 | 直接删除旧 AppIcon |
| 本地 Mac 无法满足工具链要求 | 使用远程 Mac 验证 | 只依据编辑器预览上线 |
| 长期高频稳定构建 | 自有 Mac 或固定节点 | 使用临时节点且不保存环境记录 |
| 一次迁移或短期测试 | 按需远程 Mac | 为一次升级立即购买长期硬件 |
08 最终切换条件
只有以下条件全部满足,才适合从双轨维护切换到单一资源:
.icon文件已进入版本控制。- Target 的 App Icon 字段指向正确文件。
- 旧
AppIcon是否保留已经有明确决策。 - Default、Dark、Mono 外观均可识别。
- 最低部署版本的图标结果可接受。
- 模拟器和真机结果没有关键差异。
- Archive 中的 Bundle 资源正确。
- TestFlight 安装后不再显示旧图标。
- App Store Connect 中的构建已经完成处理。
- 团队保留了可回退提交和验收截图。
如果你目前依赖临时借用的 Mac、不同电脑之间手动同步 .icon 文件,或让 CI 节点长期保留多套不一致的 Xcode,真实缺点通常是环境漂移、文件遗漏、日志难以复现,以及低版本结果无法稳定重测。对于一次图标迁移或短期多版本验收,可以先在 CALMVPS 的远程 Mac 方案 上建立独立迁移分支,跑完 Archive 与 TestFlight,再决定是否购买硬件或保留常驻构建环境。需要长期运行构建任务时,再根据 CALMVPS 的方案与价格说明 分开核算短期验证和持续集成成本。