I've recently migrated my application to support iOS7 and during that process updated my app icons to use an Asset Catalog; which is all working great in the app. However, in Organizer—and TestFlight—my app icon is missing.

The same is also happening in TestFlight—which implies there is something missing from my bundle. Any help would be gratefully received.
Pau*_*ulJ 13
因此,您似乎仍然需要Icon files在app plist中指向一个图标,该图标是应用程序中的资源; 即使Xcode在我转换到目录时删除了它; 这是我手动创建的条目,同时保留资产目录:

请注意,我已使用不同的图标对此进行了测试,此设置不会影响App在运行时实际使用的图标; 此条目似乎仅由Organizer和TestFlight使用,从而解决了我的问题.
是的,在使用资产目录时,您可能需要执行以下操作,以便在管理器,测试航班和可能未知的AppStore位置中看到链接的应用程序图标,并为Ad-Hoc发行版/制作工作.
创建资产目录后,请记下.xassetsXcode中列出的启动图像和应用程序图标名称.
默认情况下应该是
AppIconLaunchImage[要在Xcode中单击您的.xassets文件夹/图标.](这可以更改,所以请稍后记下此变量)
现在每个构建创建的是.app中的以下数据结构:
对于应用图标:
苹果手机
AppIcon57x57.png(iPhone非视网膜)[ 注意图标名称前缀 ]AppIcon57x57@2x.png (iPhone视网膜)每个其他图标分辨率的格式相同.
iPad的
AppIcon72x72~ipad.png (iPad非视网膜) AppIcon72x72@2x~ipad.png (iPad视网膜)(对于iPad,后缀略有不同)
主要问题
现在我注意到在我Info.plist的Xcode 5.0.1中,它Icon files (iOS 5)在完成资产目录的创建后自动尝试并且无法为" " 创建密钥.
如果它确实成功创建了一个参考/这可能已被Apple修补或刚刚工作,那么您所要做的就是查看图像名称以验证上面列出的格式.
最终解决方案
将以下密钥添加到main .plist
我建议您.plist使用TextWrangler等外部文本编辑器打开主页,而不是在Xcode中复制并粘贴以下键.
<key>CFBundleIcons</key>
<dict>
<key>CFBundlePrimaryIcon</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>AppIcon57x57.png</string>
<string>AppIcon57x57@2x.png</string>
<string>AppIcon72x72~ipad.png</string>
<string>AppIcon72x72@2x~ipad.png</string>
</array>
</dict>
</dict>
Run Code Online (Sandbox Code Playgroud)
请注意我只包含了我的示例分辨率,您需要将它们全部添加.
如果要在没有外部编辑器的情况下在Xcode中添加此密钥,请使用以下命令:
Icon files (iOS 5) - 字典Primary Icon - 字典Icon files - 数组Item 0- String = AppIcon57x57.png
和其他项目/应用程序图标.现在,当您最终归档项目时,最终的.xcarchive有效负载.plist现在将包含上述要构建和使用的图标位置.
<key>IconPaths</key>
<array>
<string>Applications/Example.app/AppIcon57x57.png</string>
<string>Applications/Example.app/AppIcon57x57@2x.png</string>
<string>Applications/Example.app/AppIcon72x72~ipad.png</string>
<string>Applications/Example.app/AppIcon72x72@2x~ipad.png</string>
</array>
Run Code Online (Sandbox Code Playgroud)