2013-10-01 54 views
7

我有一个应用程序,开始iOS 5的生活,并从那以后一直更新。对于iOS 7,我已切换到使用资源目录来处理所有资源,这很好,看起来运行良好。然而,当我试图提交给苹果,我得到验证错误:图标,资产目录和Info.plist混淆

无效图像路径 - 无图像的下键“CFBundleIconFiles”引用的路径中找到:“[email protected]

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

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

那么,如何成功将我的更新提交给Apple?我需要Info.plist中的参考吗?是否还有其他设置需要检查?警告是虚假的,还有一些我应该忽略的事情(在升起雷达后)?

回答

10

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

这是真实的应用程序图标的资产,当我们在我们的资产目录设置下面的图标:

enter image description here

他们变得编译的,像这样:

enter image description here

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

enter image description here

我已经上传我以前github.com/danielctull-tests/AssetTest测试项目。

+0

“当为iOS 6或更低版本编译资产目录时,图像放在应用程序包的根目录下” - 对于iOS 7和更高版本,它有所不同吗?据我所知,无论我使用的是SDK还是部署目标,其行为都是相同的。 –

3

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

  • 我删除CFBundleIconFile,我不认为这是在iOS 6以上
  • 用我用的资产名称,而不是在CFBundleIconFiles

图标文件名,我不清楚是什么为了清楚起见,专有名称是这样的:通过图标文件名,我的意思是在选择图标时资产目录的属性检查器中可见的名称;资产名称我的意思是AppIcon,它是指我的情况下的七个实际图标。

这两个都通过苹果的验证步骤,似乎看起来没问题。我目前没有iOS 6设备,但它在模拟器中正确显示。