8

我有一个从 iOS 5 开始的应用程序,此后一直在更新。对于 iOS 7,我已切换到对所有资源使用资产目录,这很好,而且看起来运行良好。但是,当我尝试提交给 Apple 时,我收到验证错误:

无效的图像路径 - 在键“CFBundleIconFiles”下引用的路径中找不到图像:“Icon@2x.png”

其他图标也出现同样的错误。据我所知,这些图标确实出现在资产目录中,并且名称 - 一直到案例 - 完全匹配。资产目录位于“复制捆绑资源”中,当我在 iPhone 和 iPad(iOS 7 中)以及 iOS 6 模拟器中运行应用程序时,所有资源都出现在正确的位置。

我已更新应用程序以使用 iOS 6 的最低部署目标。

那么,如何成功地将更新提交给 Apple?我需要 Info.plist 中的参考资料吗?我应该检查其他设置吗?警告是否虚假并且我应该忽略(在提高雷达之后)?

4

3 回答 3

10

当为 iOS 6 及更低版本编译资产目录时,图像将放在应用程序包的根目录中,就像您只是以旧方式复制它们一样。发生这种情况时,Apple 根据资产名称而不是文件名来命名图像,这意味着我们仍然可以+[UIImage imageNamed:]在 iOS 6 及更低版本上使用来获取资产。

当我们在资产目录中设置了以下图标时,App Icon 资产也是如此:

在此处输入图像描述

它们像这样编译:

在此处输入图像描述

由于 iOS 6 仍然是 iOS 6,这些文件必须在 Info.plist 中引用,否则现有系统将无法工作。在为这个测试应用程序编译的 Info.plist 中,你会看到 Xcode 已经CFBundleIconFiles为我们添加了,所以我们不需要。

在此处输入图像描述

我已将我使用的测试项目上传到github.com/danielctull-tests/AssetTest

于 2013-10-01T21:00:38.913 回答
4

好的,这就是我最终要做的。我不是 100% 确定它是正确的,但我认为它值得分享。

  • 我删除了CFBundleIconFile,我不认为在 iOS 6 及更高版本中使用
  • 我使用了资产名称而不是图标文件名CFBundleIconFiles

为了清楚起见,我不清楚正确的名称是什么:图标文件名是指选择图标时在资产目录的属性检查器中可见的名称;我的意思是资产名称AppIcon,在我的例子中指的是七个实际图标。

这两个都通过了 Apple 的验证步骤,看起来还不错。我目前没有 iOS 6 设备,但它在模拟器中正确显示。

于 2013-10-01T18:18:08.957 回答
1

在这件事上我也遇到了很多问题——我经常收到缺少 CFBundleIconName 的错误,而且我的图标在哪里找不到。所以这是我的故事,也许它会对某人有所帮助。顺便说一句,我正在使用带有 Xamarin 的 Visual Studio。

  1. 使用 AppIcons 将资产目录添加到您的项目(资产的实际名称并不重要,它只是用于应用程序图标)。添加所有必要的图标大小。对于“App Store”图标,我添加了一个名称中没有 @ 的图标,正如论坛中有人建议的那样,但我不确定是否 100% 有必要。为了生成不同的图标大小,有很多网站和工具可以为您做到这一点,您只需要提供 1024x1024 的图标即可。他们将产生其余的。

  2. 在“Visual Assets”下的 Info.plist 中,然后“App Icons”将源设置为您刚刚创建的资产。

  3. 现在检查您的 Info.plist。不要使用外部编辑器打开它,因为一旦您构建项目,您的所有更改都将被覆盖。执行以下操作 - 右键单击​​解决方案资源管理器中的 Info.plist,然后选择打开方式 -> 通用 PList 编辑器。

  4. 检查您是否有以下条目:

    - 属性 = CFBundleIconName,类型 = 字符串。值 = Assets.xcassets/AppIcons.appiconset -Property = XSAppIconAssets,类型 = 字符串。值 = Assets.xcassets/AppIcons.appiconset

  5. 请注意,当 Visual Studio 完全添加某些内容时,它会自动添加“Resources/Assets.xcassets/AppIcons.appiconset”作为值。但在我的情况下,资产目录是在资源文件夹之外创建的,因此我的图标在哪里找不到。因此,请检查您的资产文件夹的创建位置。

  6. 不需要 CFBundleIconFiles,因为 Apple 现在使用资产目录。

我希望我能有所帮助:)

于 2018-05-13T19:12:38.130 回答