组织者中缺少AppIcon

时间:2013-09-25 10:04:18

标签: ios xcode5

我最近迁移了我的应用程序以支持iOS7,并在此过程中更新了我的应用程序图标以使用资产目录;这在应用程序中工作得很好。但是,在Organizer和TestFlight中,我的app图标丢失了。

Missing AppIcon in Organizer

同样在TestFlight中也发生了 - 这意味着我的包中缺少某些东西。我们将非常感激地提供任何帮助。

3 个答案:

答案 0 :(得分:13)

因此,您似乎仍然需要在app plist中指向Icon files条目,该条目指向应用程序中的资源图标;即使Xcode在转换到目录时删除了它;这是我手动创建的条目,同时保留资产目录:

plist entry

请注意,我已使用不同的图标对此进行了测试,此设置不会影响App在运行时实际使用的图标;此条目似乎仅由Organizer和TestFlight使用,从而解决了我的问题。

答案 1 :(得分:6)

是的,在使用资产目录时,您可能需要执行以下操作才能将应用的图标链接起来并为 Ad-Hoc发行版 / 生产<工作/ strong>在组织者试飞以及可能未知的AppStore位置中看到。


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

默认情况下,这应该是

  • AppIcon
  • LaunchImage

[点击Xcode中的.xassets文件夹/图标。] (这可以改变,所以稍后请注意这个变量)


现在创建的内容是.app:

中的以下数据结构

对于应用图标:

iPhone

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

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

ipad公司

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

(对于iPad,后缀略有不同)


主要问题

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

如果它确实成功创建了一个参考/这可能已被Apple修补或刚刚工作,那么您所要做的就是查看图像名称以验证上面列出的格式。

最终解决方案:

将以下密钥添加到主.plist

我建议您使用外部文本编辑器(如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>

请注意我只包含了我的示例分辨率,您需要将它们全部添加。


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

  • Icon files (iOS 5) - 字典
  • Primary Icon - 字典
  • Icon files - 数组
  • Item 0 - 字符串= AppIcon57x57.png 并为每个其他项目/应用程序图标。

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

不要将以下内容添加到任何.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>

答案 2 :(得分:2)

迁移到资产目录的另一个可能的打嗝。

有两种方法可以在项目设置中定义图标:iOS3以来的CFBundleIconFiles和iOS5以来的CFBundleIcons。尽管年龄较大,但年龄较大,与反向兼容性的常识相反, still takes precedence 。我在使用CFBundleIcons之前直接迁移到资产目录。在我迁移之后,我删除了CFBundleIcons指向的原始文件,因为,你知道,现在我有了闪亮的新资产目录,对吧? XCode做了三件事:

  • 它隐藏了常规项目设置中的前CFBundleIcons的可视化编辑。当你选择使用闪亮的新资产目录时,为什么还需要它,对吧?
  • 它不会删除Info.plist的原始CFBundleIcons键,但是,通过选择资产目录,你说清楚并且声音很大,你不会在iOS5下面
  • 它也不验证所述密钥。在任何地方都没有小红色十字标记,因为可以显示它们的项目设置UI不再可见

Info.plist 中的结果是隐藏的,视觉上不可编辑的,可能是过时/错误的密钥,该密钥优先于资产目录为您创建的内容

手动打开Info.plist并删除CFBundleIcons,重建,重新上传,然后再回复图标。