Xcode9发布iOS11应用时缺少CFBundleIconName

133
我在使用 iOS 11 SDK 和 Xcode 9 构建应用程序时,遇到了发布新版本的问题。构建和上传二进制文件都非常顺利没有出现任何问题。然后,在“活动”中,我能看到该版本已在 iTunes Connect 中以“处理中”的状态出现。但是一段时间后,它就消失了,并且我收到了以下电子邮件回复:

尊敬的开发者:

我们发现了您最近提交的""应用程序的一个或多个问题。为了处理您的提交,请纠正以下问题:Info.plist 缺少值 - 在捆绑包''中缺少 Info.plist 关键字 CFBundleIconName 的值。提供资产目录中图标的应用程序还必须提供此 Info.plist 关键字。有关更多信息,请参见http://help.apple.com/xcode/mac/current/#/dev10510b1f7。纠正这些问题后,您可以再次提交修正后的二进制文件。祝好,应用商店团队

链接中提供了有关资源包的一些信息。我尝试将 CFBundleIconName 键设置为项目名称或图像文件名称,然后重新提交应用程序。然而,我仍然收到与上述相同的电子邮件。

非常感谢任何建议或帮助。


2
你是否在项目的常规设置中正确设置了“应用程序图标源”到你的资源目录? - vmeyer
1
@vmeyer: 那么不使用资源目录的应用程序怎么办? - user102008
30个回答

98

我整天以及夜晚都在尝试各种可能性,最终找到了解决方案 - 希望这能帮助某人免去这场噩梦。

我的应用之前没有使用xcassets目录,因此在尝试通过使用文件-新建-文件...并从文件类型中选择资源目录来解决此问题时,我添加了一个资源目录到项目中 - 我将其命名为Assets.xcassets,并在xcode项目中选择了它。然后右键单击右侧区域,选择添加应用图标和启动图像,然后选择新的iOS应用程序图标,再将1024x1024的图像拖到应用商店iOS 1024pt插槽的空闲位置上,你会认为这会起作用,但是在存档和提交到商店后,我仍然收到了拒绝邮件。

丢失Info.plist值 - bundle中缺少Info.plist密钥CFBundleIconName的值。bla bla bla...

我还在Info.plist中添加了“Icon Name”密钥,该密钥也称为CFBundleIconName,并将其设置为与项目中的1024x1024图像匹配的字符串文件名。但是即使检查IPA内容显示所有内容都正确放置,所有这些都不起作用。

最后,我从名为Assets.xcassets的目录中删除了AppIcon,使其为空,并执行以下操作以解决该问题:

通过单击应用程序名称并选择GENERAL选项卡,然后在App Icons和Launch Images部分下方点击App Icons源旁边的按钮并选择使用资源目录 - 选择您的资源目录的名称 - 我的名字是Assets.xcassets - 并使用弹出窗口上的按钮将应用程序转换(迁移) - 我还勾选了转换启动图像的框 - 完成后,App Icons源和Launch Images源将有下拉列表中的名称。

点击资源目录进入 - 我的是Assets.xcassets,然后点击AppIcon部分,并将您的1024x1024图像拖放到App Store iOS 1024pt well / slot中。最后将您的应用程序归档并提交到应用商店 - 到那时,希望您不会再收到来自地狱(我开始称呼它们为这样)的有关应用程序拒绝的电子邮件,您可以返回iTunesConnect提交您的应用程序。

祝你好运 - 我理解你可能正在经历这种大多数加密错误时感受到的痛苦,当你尝试了许多合理的解决方法仍然没有结果。有时软件工程师的生活就是这样... ;)

如果这很容易,每个人都会做到,对吧。 ;)


确切地说,这很麻烦,我在非常冷静地阅读链接后才弄清楚。实际上,您无需删除先前的应用程序图标,但是如果您在左侧切换iPad、iPhone复选框,则会获得所有所需的大小。 - eracube
2
谢谢!我已经苦苦挣扎了很长时间!我只是喜欢苹果的错误提示是如此有指导性。 - talsharonts
对我来说关键是从“General”项目标签中添加AppIcon资源。 (奇怪的是,创建新的资产目录然后添加应用程序图标并没有起作用。) - Jason Moore
1
谢谢您。虽然我上传到App Store时收到了成功的提示,但我无法在iTunes Connect上看到任何上传内容。非常令人困惑。通常,如果您在上传到商店时立即离开某些内容,您会收到错误提示。 - uplearned.com
4
我越是开发iOS,就越讨厌它。 - mike
这个解决方案解决了我那个旧的 Obj-C 项目在没有资源目录的情况下出现的问题。谢谢。 - swift2geek

91

最简单的解决方案是在 plist 文件中添加 CFBundleIconName 键,并在资源目录中填充所有 AppIcon 切片。

Info.plist:

<key>CFBundleIconName</key>
<string>AppIcon</string>

输入图像描述

输入图像描述

在此下载已工作的应用程序图标资源


3
这对我很有用,非常感谢!顺便说一下,在Mac上的VS中也可以使用。 - vhugo
2
父标签会更好,现在我必须猜测键应该放在哪里。 - Martin
1
这对我来说效果很好,但有一个注意事项。看起来AppStore不允许在.png(alpha层)中使用透明度。在此创建了一个存储库,其中包含这些说明和更新后的图像:https://github.com/cy-campos/xcode-ios-icon-template - cy-c
2
这个解释缺少的部分是:在上面的列表中,“图标名称”是被询问值的“通用名称”。如果你右键单击plist中的任何项并选择“原始键和值”,你会看到这个名称变成了CFBundleIconName,这就是苹果在其失败消息中使用的名称。 - bpedit
我之后还得移除AppStore图标上的Alpha通道。 - undefined

42
我发现自从Xcode 9和iOS 11,构建需要将iTunes Connect应用程序图标与二进制文件捆绑在一起,这可以直接在早期版本的Xcode(XCode 8.3.3及更早版本)中添加到iTunes Connect中。如果您通过App Store分发应用程序,请将App Store图标添加到位于Xcode项目中的资产目录中。该图标的位置因平台而异。对于使用Xcode 8.3.3及更早版本构建的iOS和watchOS应用程序,您需要在iTunes Connect中添加App Store图标。对于macOS和tvOS应用程序,您需要将App Store图标添加到Xcode项目中,但是与使用Xcode 9及更高版本构建的应用程序不同,其在资产目录中的位置也不同。所需的App Store图标应放置在应用程序包中的资产目录中。

Adding App Store Icon

因此,CFBundleIconName现在应设置为AppIcon(默认值)或您设置的任何值。

仅添加该图像将无法通过iTunes存档上传过程,因此我们需要添加以下尺寸的所有应用程序图标图像:

  • 20pt 1x、2x、3x
  • 29pt 1x、2x、3x
  • 40pt 1x、2x、3x
  • 60pt 1x、2x、3x
  • 76pt 1x、2x
  • 83.5pt 2x
  • 1024pt 1x

因此,现在是使用资源目录指定应用程序图标的时候了。


1
在我的情况下(使用 Xamarin/Visual Studio for Mac 构建的旧应用程序),解决方案非常简单,只需要迁移到资源目录即可。我还有一个作为故事板的启动屏幕,无法将其迁移到资源目录,所以我让它保持原样。但仍然提示缺少营销图标。 - firepol
我认为您需要在应用图标下添加营销图标,该图标也应为1024pt。另外,请验证您是否正在使用Xcode 9 GM而不是测试版上传二进制文件。 - eracube
1
Visual Studio for Mac(例如Xamarin Studio)在资源中没有显示应用商店/营销图标,因此我无法通过UI添加它。我将向Xamarin提交一个错误报告。我所做的是:编辑Contents.json>添加ios-marketing的文件名。我还必须在csproj文件的ImageAsset中添加该文件。由于某种原因,我的iTunesArtwork 2x不正确(使用与1x相同的文件)。我用1024px文件覆盖了它。生成的IPA不包含icon-marketing.png,但通过应用程序加载器上传成功。双重检查:再次尝试没有营销图标但有itunesartwork修复:出现营销错误。 - firepol
1
这是给Xamarin/Visual Studio for Mac用户的错误报告链接:https://bugzilla.xamarin.com/show_bug.cgi?id=59515 - firepol
到2030年,Apply要求图标至少有33,178个不同的PNG文件。 - Warren P

17

每当我提交一个新版本的应用程序二进制文件时,我都会收到相同的电子邮件。我尝试了这里列出的所有解决方法,但没有任何作用。然后我进行了一次修改,这个方法成功了。

目标...构建设置...资源目录编译器-选项 部分,确保包含图标的资产目录的名称显示在资产目录应用程序图标集名称中。由于某种原因,我的资产目录应用程序图标集名称是空的。


2
这对我来说解决了!尝试了其他一切都没有效果。当使用 adhoc 构建导出 .ipa 包并检查时,发现在更改资产编译器以指定“Asset Catalog App Icon Set Name”为“AppIcon”之前,图标不在其中,这也是有道理的,因为它与 xcassets 中的名称匹配。 - GameSalutes

13

我也遇到了同样的问题,解决方法如下:

以下是具体步骤指南:

步骤一:

创建一个1024 * 1024像素的图标png文件。

步骤二:

将此png文件上传到https://www.appicon.build/网站,并在屏幕上拖放它。

enter image description here

步骤三:

它会要求您输入电子邮件地址。输入后,几秒钟后,您将在邮箱中收到所有所需的图像大小。下载该压缩文件并解压缩。

步骤四:

返回到Xcode中的项目,并将此解压后的文件夹(名为AppIcon.appconset)添加到Xcode项目的资源文件夹中。

enter image description here

步骤五:

双击Asset.xcassets文件夹,并从生成的图像中将所需的图像拖放到2x和3x图像的图像占位符上。

enter image description here

搞定!...


3
在Mac应用商店上也有一个名为Icon Set Creator的应用程序。它能够同样简单地完成任务,且不会上传任何内容到网络。 - Yaroslav
很棒的帖子,这对我很有用,节省了我很多时间,谢谢。 - andydoe

11

在IOS 11中,我们需要在我们的项目中添加一个1024x1024大小的新图标。

确保Icon文件已从源代码束的资源文件夹中删除,并且info.plist中的Icons文件键已清除。同时按照以下方式在plist中添加CFBundleIconName键。

Info.plist:

<key>CFBundleIconName</key>
<string>AppIcon</string>

同样在工程中的Target->Build Settings->Asset Catalog Compiler部分,确认包含图标的资产目录的名称在“Asset Catalog App Icon Set Name”中显示。


11

使用iOS 11或更高版本SDK构建的应用程序必须在asset目录中提供应用程序图标,并且还必须为此Info.plist关键字提供一个值。

对于没有资产目录的旧项目,在提交到Appstore时会有问题。

在项目 —> 目标属性 - 常规选项卡 —> 应用程序图标和启动图像中, 应用程序图标 —> 选择使用Asset目录 然后它会提示转换(迁移)并创建一个.xcassets文件。勾选转换启动图像的框。
完成后,应用程序图标源和启动图像源将在下拉列表中具有名称。 将应用程序图标和其他图标添加到其中。


10

我也遇到了“缺少Info.plist值 - 在bundle中缺少CFBundleIconName键的值…”错误,并希望留下简明扼要的答案,帮助下一个人。

应用程序未使用资源目录。尽管这不是该错误所说的,但解决此问题需要使用资源目录,并且添加值的方式非常重要。仅手动向.plist添加此丢失的键\值是不够的;还需要从.plist中删除CFBundleIcons值。这可以手动完成,但我建议使用XCode界面,通过项目属性 - 通用应用程序图标和启动图像进行编辑。这就是我让我的应用程序运行起来的方法。

以下是对我的.plist所做更改的截屏。

enter image description here

应用程序图标和启动图像
enter image description here

如果您还没有,请向项目添加新的资源目录。
单击导航器窗口顶部的应用程序名称
选择“通用”选项卡
向下滚动到“应用程序图标和启动图像”部分
单击“使用资源目录”按钮
注意:我创建了自己的资源目录和iOS应用程序图标图像集,但将其链接到现有的图像集不起作用,因为它会创建一个新的图像集,其中包含空值\图像。 我必须删除它们并让此过程为我创建它们。如果您现在只是添加资源目录来解决此问题,请让此过程为您创建它,而不是手动添加图像集。

单击以转换\迁移应用程序。

点击按钮后,对我来说没有自动刷新。我离开并再次返回设置屏幕,此时已在下拉列表中分配了值。
现在通过单击它打开您的新资源目录 点击“AppIcon”部分,将所需的图像拖到相应的位置。
您将需要1024x1024像素的图像用于App Store iOS 1024pt图标和任何其他iPhone\iPad\通用应用程序所需的图标。1024x1024px图像也称为营销图标。没有它,您无法提交您的应用程序。
现在您应该能够归档您的应用程序并将其提交到应用商店。

8

如果以上回答对您没有帮助(在此问题上花费了很多时间):

请确保检查您的资源目录的目标成员身份!如果您没有正确地链接成员身份,您将会得到同样的超级通用错误(苹果应该在错误消息方面做些什么)。

enter image description here

目标成员身份应直接对应于您正在使用图标的目标。例如,我将此单个目录用于我的主应用程序和手表应用程序资产,您必须通过选择适当的成员来指定此目录。

您无需编辑属性列表,大多数答案都是误导性的。

希望这能帮助遇到此问题的人!


3
天啊,在花费数小时与这个问题搏斗后,结果发现只是需要检查一下目标成员身份,因为出于某种原因它被取消勾选了。非常感谢。 - GGirotto

3
在我的情况下,当你在此页面完成所有这些操作后,请不要忘记再次存档你的项目 :)

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