14

我最近迁移了我的应用程序以支持 iOS7,并在此过程中更新了我的应用程序图标以使用资产目录;这一切都在应用程序中运行良好。但是,在 Organizer 和 TestFlight 中,我的应用程序图标不见了。

管理器中缺少 AppIcon

TestFlight 中也发生了同样的事情——这意味着我的包中缺少一些东西。任何帮助将不胜感激。

4

3 回答 3

13

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

plist 条目

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

于 2013-09-25T17:04:38.587 回答
6

是的,在使用Asset Catalog时,您可能需要执行以下操作以链接应用程序的图标,并为在OrganizerTest flight和可能未知的 AppStore 位置中看到的Ad-Hoc 分发/生产工作。


.xassets创建 Asset Catalog 后,记下Xcode 中列出的 Launch Images 和 App Icon 名称。

默认情况下,这应该是

  • AppIcon
  • LaunchImage

[要查看此内容,请单击 Xcode 中的 .xassets 文件夹/图标。](可以更改,因此请记下此变量以备后用)


现在每个构建都在您的 .app 中创建以下数据结构:

对于应用程序图标:

苹果手机

  • 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

.plist我建议您使用诸如 TextWrangler 之类的外部文本编辑器打开您的 main ,而不是在 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>

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


如果您想在没有外部编辑器的情况下在 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>
于 2013-11-04T23:12:57.983 回答
2

迁移到Asset Catalog的另一个可能的问题。

在项目设置中定义图标有两种方式:CFBundleIconFilesiOS3 起和CFBundleIconsiOS5 起。较旧的,尽管较旧,与向后兼容性的常识相反,仍然优先。我CFBundleIcons在直接迁移到资产目录之前正在使用。在我迁移之后,我删除了指向的原始文件,CFBundleIcons因为,你知道,现在我有了闪亮的新资产目录,对吧?XCode 做了三件事:

  • CFBundleIcons它从常规项目设置中隐藏了前者的可视化编辑。当您已经选择了闪亮的新资产目录时,为什么还需要它,对吧?
  • 它不会删除CFBundleIconsInfo.plist 的原始键,但是,通过选择资产目录,您可以清楚而响亮地说您不会低于 iOS5
  • 它也不验证所述密钥。任何地方都没有小红叉标记,因为可以显示它们的项目设置 UI 不再可见

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

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

于 2014-02-12T17:40:57.817 回答