图标、资源目录和Info.plist混淆

8
我有一个应用程序,最初是为iOS 5开发的,并一直更新至今。对于iOS 7,我已经切换到使用资源目录来管理所有资源,这很好并且似乎运行良好。然而,当我尝试提交给Apple时,我遇到了验证错误:
无效的图像路径 - 在键“CFBundleIconFiles”下引用的路径中找不到任何图像:“Icon@2x.png”
其他图标也会出现同样的错误。这些图标确实出现在资源目录中,并且名称(包括大小写)与我所知道的完全匹配。资源目录位于“复制捆绑资源”中,在我的iPhone和iPad(iOS 7)上运行应用程序以及在iOS 6模拟器中,所有资源都出现在正确的位置。
我已将应用程序更新为iOS 6的最低部署目标。
那么,如何成功地将我的更新提交给Apple?我需要在Info.plist中添加引用吗?是否还有其他设置我应该检查?这个警告是否虚假的,我应该忽略它(在提出Radar之后)?
3个回答

10
当为iOS 6及以下版本编译资产目录时,图像将放置在应用程序包的根目录中,就好像您只是按照旧方式复制它们一样。当这种情况发生时,苹果根据资产名称而不是文件名命名图像,这意味着我们仍然可以在iOS 6及以下使用 + [UIImage imageNamed:] 获取资产。
对于 App Icon 资产来说也是如此,当我们在资产目录中设置以下图标时:
它们被编译为如下所示:
由于 iOS 6 仍然是 iOS 6,因此必须在 Info.plist 中引用这些文件,否则现有系统将无法工作。查看此测试应用程序的已编译 Info.plist,您会发现Xcode已经为我们添加了 CFBundleIconFiles ,因此我们不需要添加。
我已经将测试项目上传到了github.com/danielctull-tests/AssetTest

当为iOS 6及以下版本编译资产目录时,图像会放置在应用程序包的根目录中。对于iOS 7及更高版本是否有所不同?据我所知,无论使用哪个SDK或部署目标,它的行为方式都是相同的。 - JW.

4
好的,以下是我最终采取的做法。我不100%确定这是正确的,但我认为值得分享。
  • 我删除了CFBundleIconFile,因为我认为在iOS 6及以上版本中未使用
  • 我在CFBundleIconFiles中使用了资产名称而不是图标文件名
我不清楚正确的名称是什么,因此为了清晰起见:图标文件名是指在选择图标时资产目录中属性检查器中可见的名称; 而资产名称是指AppIcon,在我的情况下它指的是七个实际图标。
这既通过了Apple的验证步骤,也看起来还可以。目前我没有iOS 6设备,但在模拟器中显示正常。

1

在这个问题上我也遇到了很多问题 - 我经常会收到缺少CFBundleIconName的错误,我的图标也无法找到。所以这是我的故事,希望对某些人有所帮助。顺便说一下,我正在使用带有Xamarin的Visual Studio。

  1. 使用AppIcons(实际名称不重要,只需用于应用程序图标)向项目添加资产目录。添加所有必要的图标尺寸。对于“应用商店”图标,我已经添加了一个没有@符号的图标名称,因为论坛中有人建议这样做,但我不确定是否100%必要。有许多网站和工具可以为您生成不同的图标尺寸,您只需要提供1024x1024的图标即可。它们将生成其余部分。

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

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

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

    -Property = CFBundleIconName,Type = String。 Value = Assets.xcassets / AppIcons.appiconset -Property = XSAppIconAssets,Type = String。 Value = Assets.xcassets / AppIcons.appiconset

  5. 请注意,Visual Studio自动添加了“Resources/Assets.xcassets/AppIcons.appiconset”作为值。但在我的情况下,资产目录是在Resources文件夹之外创建的,因此找不到我的图标。因此,请检查您的资产文件夹创建位置。

  6. 现在不需要CFBundleIconFiles,因为Apple现在使用Asset Catalog。

我希望我能有所帮助 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接