【问题标题】:Icons, Asset Catalog and Info.plist confusion图标、资产目录和 Info.plist 混淆
【发布时间】:2013-10-07 12:48:27
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: ios7 info.plist asset-catalog


    【解决方案1】:

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

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

    它们像这样编译:

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

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

    【讨论】:

    • “当为 iOS 6 和更低版本编译资产目录时,图像被放在 app bundle 的根目录中”——iOS 7 和更高版本有什么不同吗?据我所知,无论我使用什么 SDK 或部署目标,它的行为方式都是相同的。
    【解决方案2】:

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

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

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

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

    【讨论】:

      【解决方案3】:

      我在这件事上也遇到了很多问题 - 我经常收到缺少 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 -属性 = XSAppIconAssets,类型 = 字符串。值 = Assets.xcassets/AppIcons.appiconset

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

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

      希望对你有所帮助:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-02-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-10
        相关资源
        最近更新 更多