Assets创建分组后真机资源加载失败(含App图标)求助
这个情况我之前在Xcode 9.x版本上碰到过,大概率不是Xcode的bug,而是Asset Catalog的配置细节没踩对——真机对资源的加载规则比模拟器要严格得多,下面是几个亲测有效的解决办法:
1. 确认你创建的是正确的Asset分组类型
别在Assets.xcassets里创建普通的Folder(右键→New→Folder),这种文件夹在真机构建时会被Xcode忽略,导致资源找不到。你需要创建的是Asset Group:右键点击Assets.xcassets → New → Asset Group,把资源放到这种分组里才会被真机正确识别。
2. 检查资源的Target关联
选中Assets.xcassets,打开右侧的属性检查器,确认你的主App Target已经被勾选。有时候新建的分组可能没自动关联到目标,导致真机无法打包这些资源。
3. 彻底清理缓存并重启Xcode
Xcode 9.x的缓存偶尔会抽风,按以下步骤操作:
- 按
Cmd+Shift+K清理项目构建缓存 - 按
Cmd+Option+Shift+K清理Derived Data(这个很关键) - 完全退出Xcode,重新打开后再构建到真机
4. 修正资源引用方式
如果你用UIImage(named: "资源名")加载图片,注意不要加分组路径!比如你在名为"Icons"的Asset Group里放了"HomeIcon",直接写UIImage(named: "HomeIcon")就行,别写成"Icons/HomeIcon"——模拟器可能能识别这种写法,但真机完全不认。
5. 检查App Icon的配置
如果连App图标都消失了,先确认App Icon所在的分组是专门的App Icon类型:右键Asset Group → App Icon & Launch Image → App Icon,然后检查所有要求的尺寸是否都已正确添加。真机对App Icon的尺寸完整性要求很高,缺失某个尺寸就可能导致图标不显示。
如果以上方法都试过还是不行,那可能是Xcode 9.1的小众bug,你可以尝试把Assets.xcassets导出为.car文件再重新导入,或者升级到Xcode 9.4.1(这是Xcode 9系列的最终稳定版,修复了很多早期的小问题,同时兼容Swift 4)。
内容的提问来源于stack exchange,提问作者Saranjith

