无效的图像路径 - 在键“CFBundleIconFile”下引用的路径中找不到图像:Icon.png。

56
当我将我的应用上传到App Store时,使用Application Loader遇到了错误。我的应用程序是在iOS 3.0时期开发的,仍然面向iOS 4.3及以上版本。最近,我更新了应用程序以使其与iOS7兼容。但是,Application Loader始终返回这种类型的错误。我在互联网上搜索并发现我不是唯一一个遇到此问题的人。因此,我创建了这篇文章,希望我关于应用图标所发现的内容可以帮助其他人。
9个回答

96

听起来您可能和我一样,已经接受了XCode 5.0的建议,将您的图标文件迁移到目录中。

当您这样做时,您需要从项目的.plist文件中删除CFBundleIconFile(“图标文件”)参数。那是旧的做法,一旦您迁移了您的图标文件,显然该参数就不正确了。

奇怪的是XCode的迁移没有自动为您修复此问题。本来帮助您解决这个问题是非常“苹果”的。


使用 Spotlight 搜索来定位 .plist 文件,该文件在 xCode 中可能是“红色”的。对于我的应用程序,我删除了以下部分: <key>CFBundleIconFiles</key> <array> <string>iqfitfun_lite_icon_57_w0_shadow.png</string> <string>iqfitfun_lite_icon_72_w0_shadow.png</string> <string>iqfitfun_lite_icon_114_w0_shadow.png</string> </array> - Michael Biermann
3
我不得不删除此答案中提到的CFBundleIconFile和上面评论中提到的CFBundleIconFiles(复数)。感谢大家! - txdev
我的谷歌搜索技巧再次失败了。在找到你的答案之前,我已经自己想出了解决方案并编写了SO的答案 :) https://dev59.com/pmMk5IYBdhLWcg3wvQcU#21735466 - Pavel Zdenek
这个应该可以被接受。移除 CFBundleIconFile 参数应该可以解决问题。 - einverne
1
@bCliks 我确实做过,虽然现在已经很久了,不太确定具体步骤。也许我在这里的问题/答案可以帮到你?https://dev59.com/SIHba4cB1Zd3GeqPPUoN - trainoasis
显示剩余3条评论

11
如果你的应用程序支持iOS 5.0及以上版本,则将所有图标文件移动到Asset Catalog中即可。如果你的应用程序需要支持较低版本的iOS(像我的应用程序一样),解决方案是在项目的plist文件中使用CFBundleIconFiles键。对于只适用于iPhone的应用程序,你可以执行以下操作:
1.准备8个图标文件:两个用于iOS6及更早版本的应用程序图标(57x57和114x114),两个用于iOS7的图标(60x60和120x120),两个用于iOS6及更早版本的搜索/设置图标(29x29和58x58),以及两个用于搜索(40x40和80x80)。这些文件必须是PNG格式的。你可以给这些文件取任何名字,但高分辨率文件名必须是lowResolutionName@2x.png的形式。
2.在项目的plist文件中编辑CFBundleIconFiles键(它是一个数组),将上述图标文件的名称添加到其中。只需要低分辨率文件名,不需要包括扩展名(.png)。 只要它们的名称遵循约定(带有@2x),Xcode就会自动找到高分辨率文件。
3.确保你的项目中没有Asset Catalog文件夹。
4.如果你做了上述事情,当你检查应用程序目标下的“通用”部分时,你应该看到Xcode已将所有图标文件在“应用程序图标”部分的正确位置列出。
5.如果你的应用程序需要支持iOS 3.1及更早版本,则需要制作四个额外的图标文件。这些文件的大小和名称如下:Icon.png(57x57),Icon@2x.png(114x114),Icon-Small.png(29x29),Icon-Small@2x.png(58x58)。这些固定名称是iOS所必需的,不能更改。但只要你按照这种方式命名图标文件,就不需要进行任何额外的操作。
完成上述步骤后,上传应用程序到App Store时就不应该再有任何图标问题了。Asset Catalog可以简化上述某些步骤,例如生成低分辨率图标文件(我猜测)。

我从“iOS人机界面指南”、“iOS应用程序编程指南”和“信息属性列表参考”中获得了上述信息。搜索“应用程序图标”,一切都有所解释。


  1. 是什么意思?我应该删除 .xcassets 文件夹吗?
- Stas
1
您不需要手动删除文件夹。我的意思是,在“目标设置->常规”窗口中,“应用程序图标”和“启动图像”的“源”是“不使用资源目录”。 - Julia Zhao
上文提到的第二点就是我需要的。我还在使用资源目录,并且针对iOS4.3及以上版本进行开发。 - Samik R

10
我的解决方案是:在“生成阶段”中,在“复制捆绑资源”下,点击“+”,并选择所有图标。
祝好运。

我想在这里强调一点。所有图标应如所述直接添加,无需放在文件夹中等等,只添加图标即可。 - Pablo Ezequiel Leone

4

您的配方完美地发挥了作用。

对于我来说,

我已经在Supporting Files中选择了NameOfMyApp-info.plist。

我只需要打开键:图标文件。

我刚刚删除了所有图像字符串。(提交时的错误消息正是关于这些图像的。)

我再次尝试提交并且:提交成功。

谢谢。


我在 plist 文件中删除了 "icon.png" 字符串,最终它成功了。 - Alan Cheung

4

以上解决方案均未适用于我的特定情况。

最终,下述步骤得以奏效,故在此分享给有同样问题的其他人:

  1. 从资源目录中删除导致问题的应用图标集合
  2. 在导航面板中,从目标属性中移除并重新添加“使用应用程序图标的资源目录” - 这将创建一个空的应用图标集合
  3. 通过从导航面板拖动来选择所需的大小,并分配正确的图像
  4. 删除CFBundleIconFiles键(iPad也有第二个)
  5. 重新构建档案

2
谢谢。在通用应用程序上,我把图标放在 CarPlay 的空白区域...显然它不支持 CarPlay。该图标的存在导致了这个问题。 - Kinsa

2

在构建 Cordova 项目时遇到了相同的问题。

通过在 info.plist 中删除带有 icon.pngCFBundleIcon,我解决了这个问题。


这对我有用,非常感谢 :) - RAJESH KUMAR ARUMUGAM

1
为了解决这个问题,我不得不再次添加一个图标图像。
错误提到了“CFBundleIcons:AppIcon40x40”文件,当我检查了“Images.xcassets”下的“AppIcon”图像集时,发现“Iphone Spotlight IOS 7-9 40pt”图像实际上分辨率不正确,所以我从Finder中重新拖动了80x80分辨率的图标(40x40乘以比例因子2x)。

1
这个错误似乎有几个可能的原因。在我的情况下,两个图标文件的像素尺寸不正确(由cordova生成)。所以你可能需要检查一下这个。

1
我基本上进入了info.plist并删除了我不需要的图标。我最初使用了Cocos2d模板,但大部分图标都不需要,所以我将它们全部删除了。当我归档程序并尝试验证时,出现了诸如“这个图标和那个图标在哪里?”等错误。好吧,我把它们都删除了。但在info.plist中仍然列出了所有13个图标,所以我只是删除了我删除的所有图标。

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