在pipe理器中缺lessAppIcon

我最近迁移了我的应用程序以支持iOS7,并在此过程中更新了我的应用程序图标以使用资产目录; 这是所有在应用程序的伟大工作。 但是,在组织者和TestFlight中,我的应用程序图标缺失。

在管理器中缺少AppIcon

在TestFlight中也是如此,这意味着我的包中缺less一些东西。 任何帮助将受到感谢。

所以看起来你仍然需要在应用程序plist中有一个Icon files ,它指向一个图标,该图标是应用程序中的一个资源; 尽pipe当我转换到目录时,Xcode删除了这个; 这里是我手动创build的条目,同时也保留了资产目录:

plist词条

请注意,我已经testing了不同的图标,这个设置不会影响应用程序在运行时实际使用的图标; 这个条目似乎只能用于组织者和TestFlight,从而解决我的问题。

在使用资产目录时 ,您可能需要执行以下操作来获取应用程序图标链接,并且可以在组织者testing飞行和可能未知的AppStore位置中看到Ad-Hoc分发 / 制作


创build资产目录后,请记下Xcode中.xassets中列出的启动映像和应用程序图标名称的名称。

默认情况下,这应该是

  • AppIcon
  • LaunchImage

[要在Xcode中查看您的.xassets文件夹/图标,请点击这个](这可以改变,所以稍后请注意这个variables)


现在创build的每个版本是.app中的以下数据结构:

对于应用图标:

苹果手机

  • AppIcon57x57.png (iPhone非视网膜)[ 注意图标名称前缀 ]
  • AppIcon57x57@2x.png (iPhone视网膜)

每个其他图标分辨率的格式都相同。

iPad的

  • AppIcon72x72~ipad.png (iPad无视网膜)
  • AppIcon72x72@2x~ipad.png (iPad视网膜)

(对于iPad是稍微不同的后缀)


主要问题

现在我注意到在完成创build资产目录之后,在Xcode 5.0.1的Info.plist中,它自动尝试并且未能创build“ Icon files (iOS 5) ”的密钥。

如果它确实创build了一个参考/这可能已经由苹果打补丁或刚刚工作,那么你所要做的就是检查图像名称来validation上面列出的格式。

最终解决scheme

将以下密钥添加到您的主.plist

我build议你用外部文本编辑器(如TextWrangler)而不是Xcode打开你的主.plist来复制和粘贴下面的键。

 <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> 

请注意我只包括我的示例解决scheme,您将需要将它们全部添加。


如果你想在没有外部编辑器的情况下在Xcode中添加此密钥,请使用以下命令:

  • Icon files (iOS 5) – 词典
  • Primary Icon – 词典
  • Icon files – arrays
  • Item 0 – String = AppIcon57x57.png并为每个其他项目/应用程序图标。

现在,当您最终归档您的项目时,最终的.xcarchive有效载荷.plist将包含上述要构build和使用的图标位置。

请不要将以下内容添加到任何.plist中:只是Xcode将为您的最终有效内容生成的示例

 <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> 

另一个可能的问题是迁移到资产目录

有两种方法可以在项目设置中定义图标:自iOS3以来的CFBundleIconFiles和自iOS5以来的CFBundleIcons 。 年龄越大,尽pipe年龄较大,但与落后相容性的常识背道而驰, 依然占优势 。 我在使用CFBundleIcons之前直接迁移到资产目录。 而我迁移后,我删除了由CFBundleIcons指向的原始文件,因为,你知道,现在我有shiny的新的资产目录,对不对? XCode做了三件事情:

  • 它隐藏了从常规项目设置的前CFBundleIcons的可视化编辑。 为什么你需要它,当你已经select了shiny的新资产目录,对不对?
  • 它不会删除Info.plist的原始CFBundleIcons键,但是通过select资产目录,您清楚而大声地说你不会低于iOS5
  • 它也不validation所述密钥。 因为可以显示它们的项目设置UI不再可见,所以在任何地方都不会有小的红色交叉标记

结果是Info.plist隐藏的,视觉上不可编辑的,可能过时/错误的键, 它优先于资产目录为您创build的

手动打开你的Info.plist并删除CFBundleIcons ,重build,重新上传和瞧,图标回来了。