Xcode9 iOS11应用程序发布中缺少 CFBundleIconName

我正在努力使用 iOS11SDK 构建的 Xcode 9发布我们应用程序的新版本。存档和上传二进制文件没有任何问题。这个构建在 iTunes Connect 活动下显示为“处理”,然后它就消失了,我收到了下面的邮件。

亲爱的开发商:

我们发现你方最近交付的货物有一个或多个问题 为了处理您的“交付”,以下问题必须是 纠正: 缺少 Info.plist 值-Info.plist 键的值 包中缺少 CFBundleIconName” provide icons in the asset catalog must also provide this Info.plist 有关更多信息,请参见 http://help.apple.com/xcode/mac/current/#/dev10510b1f7. Once these 问题已经得到纠正,然后您可以重新提交已纠正的 二进制,问候,应用程序商店团队

这个链接提供了一些关于资产捆绑的信息。我尝试将 CFBundleIconName 键设置为项目名或图像文件名,然后再次提交应用程序。但是,我还是收到了和上面一样的邮件。

任何帮助的建议都将受到高度赞赏。

78203 次浏览

我为此奋斗了一整天,一直到深夜,尝试了所有我能想到的排列,最终找到了这个解决方案——希望这能够挽救一些经历这场噩梦的人。

我的应用程序以前没有使用过 xcassets 目录,所以我在使用 File-New-File... 并从文件类型中选择一个资产目录来解决这个问题时,在项目中添加了一个 xcassets 目录——我将它命名为 Assets.xcassets,并在 xcode 项目中选择了它。然后右键点击右边的区域,选择添加应用程序图标和启动图片,然后新的 iOS 应用程序图标,然后在那里我拖动我的1024x1024图像到应用程序商店 iOS 1024pt 插槽,你会认为这会工作。但是在存档并提交给商店之后,我还是收到了拒绝邮件。

缺少 Info.plist 值-在 bundle 中缺少 Info.plist 键 CFBundleIconName 的值。

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

最后,我将 AppIcon 从名为 Assets.xcassets 的目录中删除,使其为空,并执行以下操作来修复这个问题:

点击你的应用程序名称,然后选择 GENERAL 标签,然后在应用程序图标和启动图片部分,点击应用程序图标源旁边的按钮,选择使用资产目录-选择你的资产目录的名称-我的名称为 Assets.xcassets-并说转换(迁移)与弹出窗口上的按钮应用程序-我也勾选框转换启动图片-当你完成应用程序图标源和启动图片源将有名称下拉列表。

点击资产目录——我的是 Assets.xcassets,然后点击 AppIcon 部分,将你的1024x1024图像拖到 App Store iOS1024pt well/槽中。最后一次存档你的应用程序并提交到应用程序商店-在这一点上,希望不会再收到来自地狱的电子邮件,因为我开始打电话给他们关于拒绝你的应用程序,你可以回到 iTunesConnect 提交你的应用程序。

祝你好运——当你尝试了很多合理的解决方案,但是没有成功时,我能理解你可能会因为这个神秘的错误而感到的痛苦。这就是软件工程师有时候的生活... ...)

如果这很容易的话,每个人都会做的,对吧

我发现,由于 XCode 9 iOS 11的构建需要 iTunes Connect App Icon 与二进制文件捆绑在一起,这些二进制文件可以在 XCode 的早期版本(XCode 8.3.3 ane 的早期版本)中直接添加到 iTunes Connect 中。

如果您通过应用程序商店分发应用程序,请添加应用程序商店 图标到位于 Xcode 项目中的资产目录 图标根据平台的不同而不同。

对于使用 Xcode 8.3.3及更早版本构建的 iOS 和 watch OS 应用程序,您可以添加 the App Store icon in iTunes Connect. For macOS and tvOS apps, you add 应用程序商店图标的 Xcode 项目,但在资产的位置 catalog is different than apps built with Xcode 9 and later.

所需的 AppStore 图标应该放置在应用程序包中的资产目录中。

Adding App Store Icon

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

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

  • 20pt 1 x,2 x,3 x
  • 29pt 1 x,2 x,3 x
  • 40pt 1 x,2 x,3 x
  • 60pt 1x, 2x, 3x
  • 76便士1倍,2倍
  • 83.5便士2倍
  • 1024pt 1 x

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

我也遇到了 "Missing Info.plist value - A value for the Info.plist key CFBundleIconName is missing in the bundle..."错误,希望留下一个简明的答案,希望对下一个人有所帮助。

这个应用程序没有使用资产目录。虽然这不是这个错误所说的,但是这是解决这个问题所需要的,但是如何添加值是很重要的。将此缺少的键值手动添加到。还有更多的东西。您还需要从您的。普利斯特。这可以手动完成,但是我建议使用 XCode 接口通过 Project Properties-General App Icon 和 Launch Image 编辑它。我就是这样让我的工作起作用的。

下面是对我的 。普利斯特所做的更改的屏幕截图。

enter image description here

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

如果您还没有新的资产目录,请将其添加到项目中。
单击导航器窗口顶部的应用程序名称
选择 GENERAL 选项卡
向下滚动到“应用程序图标和启动图像”部分
单击“ use an asset alog”按钮
注意: 我已经创建了我自己的资产目录和 iOS 应用程序图标图像集,但链接到现有的一个并不适合我,因为它创建了一个新的图像集,其中有空值图像。我必须把它们全部删除,让这个过程为我创建它们。如果您刚刚添加了一个资产目录来解决这个问题,让这个过程为您创建它,不要手动添加图像集。

点击转换迁移应用程序
点击按钮之后,没有任何东西会自动刷新。我导航离开,然后返回到设置屏幕和值现在分配在下拉列表。

Now open your new asset catalog by clicking on it
单击“ AppIcon”部分并将所需的图像拖到适当的位置。

你将需要1024x1024图像的应用程序商店 iOS1024pt 图标和任何其他 iPhone iPad 通用应用程序所需的图标。该1024x1024px 图像也被称为营销图标。没有它你不能提交你的应用程序。

你现在应该能够存档你的应用程序并将其提交到应用程序商店。

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

信息列表:

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

enter image description here

enter image description here

从这里下载工作应用程序资产

Follow the steps below.

  1. 在您的项目中添加新文件 > > 资产目录。
  2. 点击 XCODE > > General > > App 图标,参见 截图。 这将在您的资产中自动创建 AppICon 和 LaunchImage 规范,然后您可以在其中拖放 Appstore 图标和其他图标。

  3. 也可以添加
    <key>CFBundleIconName</key>
    < string > AppIcon
    .

Plist 文件中的这个条目。

将二进制文件上传到 Itunes。

不需要编辑 info.plist。通过填写 Xcassets 中 AppIcon 的所有图像占位符可以解决与图标相关的错误。

I was getting the same email whenever I submitted a binary for a new version of one of my apps. I tried all the remedies listed here, but nothing worked. Then I made one more change that worked.

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

使用 iOS 11或更高版本的 SDK 构建的应用程序必须在资产目录中提供应用程序图标,还必须为这个 Info.plist 键提供值

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

在项目ー > 目标属性ー一般选项卡ー > 应用程式图标及启动影像。 App Icons —> Select Use Asset catalog 然后,它将要求使用警报进行转换(迁移) ,并创建一个。Xcassets 文件。选中框转换发射图像太。
完成后,应用程序图标源和启动图像源将在下拉列表中显示名称。 添加应用程序图标和其他图标到它

Visual Studio 17(v-15.2)有一个问题,当你更新它的版本 > 15.2时,你会在 AssetCatalog > Media > AppIcon 中看到 App-Icon-1024x1024占位符

enter image description here

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

确保从源代码包的资源文件夹中删除 Icon 文件,并清除 info.plist 中的 Icon 文件键。 还要在 plist 中添加 CFBundleIconName 键,如下所示

信息列表:

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

在 Project-Target ー > Build Settings ー > Asset Catalog Compiler-部分中,确保包含图标的资产目录的名称显示在 Asset Catalog App Icon Set Name 中。

我已经得到了相同的问题,并解决了如下。

下面是一步一步的指导方针。

第一步:

用1024 * 1024. png 创建一个图标

第二步:

将这个 png 上传到 https://www.appicon.build/网站并在屏幕上拖放。

enter image description here

Step 3:

It will ask you to enter your email address. Enter it and then after few seconds, you will get all the required image sizes into your mailbox. Download that zipped folder and unzipped it.

第四步:

返回到 Xcode上的项目,将这个解压缩文件夹(称为 AppIcon.appconset)添加到 xcode 项目的 resources 文件夹中。

enter image description here

第五步:

双击 Asset.xcassets文件夹,在图像占位符上拖放生成的图像的2倍和3倍所需的图像。

enter image description here

你可以走了! ..。

Every app developer uses the famous "Icon Dog"

(真可惜他们改了名字!)

enter image description here

https://itunes.apple.com/us/app/app-icon-set-creator/id1052532083?mt=12

它无疑是 iOS 开发者使用的最受欢迎的应用程序,有点像是一种狂热崇拜。

它能立即解决所有问题。

For anyone who the above answers did not help(spent a good bit of head-wall banging on this one):

确保检查您的资产目录的目标成员资格!如果您没有在这里正确地链接成员资格,您将得到同样的超常规错误(苹果应该对错误消息做一些事情)。

enter image description here

目标成员资格应该与使用图标的目标直接相关。例如,对于我的主应用程序和监视应用程序资产,我都使用这个单一目录,您必须通过选择适当的成员来指定这个目录。

你根本不需要编辑列表,这些答案大多是误导性的。

希望这个能帮到打它的人!

在我的情况下; 在本页完成所有这些事情之后,不要忘记再次存档您的项目:)

我最终想出了一个干净的解决方案,它不需要向 info.plist 添加任何键,比如 CFBundleIconName。我这样做的同时,更新了应用程序商店中的一个旧应用程序,以便针对 SDK 11.2进行构建(相信我,其中包含了相当多的挫败感)。我正在 PC 上的 Visual Studio 中使用 Xamarin,但是这个解决方案应该可以在任何其他 IDE 或框架(例如 XCode)中使用。解决方案的要点在于,就应用程序图标和启动图像而言,info.plist 文件和 Resources 文件夹不再需要扮演任何角色。实际上,您可以从 info.plist 文件中删除 CFBundleIconFiles 键,这对您的项目没有任何影响。

以下是你需要遵循的步骤:

  1. Make a copy of your app icons and launch images and store them in a separate location.
  2. 为了一个干净的开始,删除对应用程序图标的引用,并从 info.plist 启动图像,这意味着删除 CFBundleIconFiles 键下的值。
  3. 从参考资料文件夹中删除应用程序图标并启动图像。
  4. 使用删除选项删除您在“资产目录”下声明的任何“资产”或“媒体”。
  5. 一个名为 Assets.xcassets 或 Media.xcassets (或类似名称)的文件夹。Xcassets 文件夹)可能仍然存在于您的项目中。它们要么位于参考资料文件夹之外,要么位于参考资料文件夹之内。全部删除。Xcassets 文件夹。
  6. 现在,在记事本这样的编辑器中打开项目文件(即。中的 csproj) ,并查看是否有任何引用指向。Xcassets 文件夹。删除所有此类引用。还要检查这个文件中是否没有指向应用程序图标或启动参考资料文件夹下的图像的引用,并删除它们。
  7. 检查以确保在 info.plist 中不再存在 XSAppIconAsset 和 XSLaunchImageAsset 键。如果它们仍然存在,则删除它们。
  8. 此时,您已经从项目中删除了任何以前的文件或对应用程序图标和启动图像的引用。如果它们仍然存在,请返回并删除它们。现在重新开始,在“资产目录”下创建一个新的“资产”或“媒体”,从而创建一个。项目中的 xcassets 文件夹。将步骤1中的应用程序图标(如果需要,还可以启动图像)复制到新文件夹下的相应文件夹中。Xcassets 文件夹。确保所有需要的图片都包括在内。
  9. 检查以确保 info.plist 现在包含您创建的新“ Asset”的 XSAppIconAsset (如果需要,还包含 XSLaunchImageAsset)键值。您的项目文件(即。Csproj)现在应该包含对您添加到新“资产”中的每个图像的引用。不需要任何额外的图像比那些项目所需要的。我建议删除你们资产部门的所有额外图片。
  10. 如果您添加了其他解决方案中提到的名为 CFBundleIconName 的密钥,那么请从 info.plist 中删除该密钥。没有这个必要。现在你可以向商店提交你的应用程序了。

对于用于 iOS 11应用程序的 Xcode 9.2,有几点需要澄清。

1- This error should be from not having icon assets in an Asset Catalog.

(通过提交一个没有资产目录的应用程序得到这个错误)。

通过添加带有所需图标的资产目录可以解决此错误。

(在我的例子中,这是一个只支持 iPhone 的应用程序,我添加了一些120倍和180倍的占位图像)。

此错误与1024x1024“ App Store Icon”无关

(当您忘记较大的商店图标时,将显示一个单独的特定错误,而不是此错误)。

4-与苹果的文档相反,即使使用(Xcode 9 + 为 iOS 11编写) ,您也可以使用该网站提交应用程序商店图标。

(上面提到的单独的特定错误是由 缺乏图标触发的,而不是在提交的构建中没有图标)。

没有更改 Info.plist 中缺少的5个 CFBundleIconName。

在这个问题上我也遇到了很多问题——我不断地得到丢失的 CFBundleIconName 和我的图标在哪里找不到的错误。这就是我的故事,也许对某些人会有所帮助。顺便说一下,我在 Xamarin 中使用 Visual Studio。

  1. Add an Asset Catalogue to your Project with AppIcons (the actual name of the asset is not important but just that it is for the application icons). Add all of the necessary icon sizes. For the 'App Store' icon I have added an icon without a @ in the name as someone in the forums suggested, but I am not sure, if it is 100% necessary. For generating the different icon sizes there are a lot of Websites and tools that can do that for you and you just need to provide the 1024x1024 one. They will generate the rest.

  2. 在 Info.plist 的“ Visual Asset”和“ App Icon”下面,将源设置为您刚刚创建的资产。

  3. 现在查看 Info.plist。不要使用外部编辑器打开它,因为一旦生成项目,所有更改都将被覆盖。在解决方案资源管理器中右键单击 Info.PList,然后选择 Open With-> Generic PList Editor。

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

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

  5. 请注意,当 Visual Studio 完全添加某些内容时,它会自动添加‘ Resources/Assets.xcassets/AppIcons.appiconset’作为 Value。但是在我的例子中,AssetCatalog 是在 Resources 文件夹之外创建的,因此,在没有找到我的图标的地方也是如此。因此,检查您的资产文件夹是在哪里创建的。

  6. 不需要 CFBundleIconFiles,因为苹果现在使用的是 Asset Catalog。

我希望我能帮上忙:)

我使用了@Omair 的答案,这是正确的,然而,我得到的错误,各种图标没有找到。问题在于 VS2017在创建资产目录时的一个 bug。添加新资产目录时,目录文件夹是在项目的根目录下创建的,而不是在/resources 下创建的。但是,info.plist 中的条目的路径是/resources 下面的。一旦我从资产目录的路径中删除/资源,所有工作都很好。希望这对谁有帮助!

I'll reply in the scope of Xamarin for fixing this issue - which is similar but not identical to Xcode. Using VisualStudio Community (16.6 Windows/ 8.6.1 macOS) with Xcode 11 installed on macOS

在 Info.plist 中添加 CFBundleIconName没有帮助,这个键现在已经不再使用了(对于针对 iOS 11及以上版本的构建,只使用 Assets.xcassets-它也可以是 Media.xcassets,你可以选择任何你想要的,但我将它引用为 Assets.xcassets)。

我的问题是: 虽然它在 Assets.xcassets 视图中的视觉效果很好,但是图像不正确。一旦我尝试手动重新影响他们,我有一个格式错误。

Xamarin 正在处理,好吧... 让我们混淆地说 Asset.xcassets 到。Csproj 文件。有时引用 Contents.json 文件并不足以描述所有资产,您还必须导入每个文件,这样它才能在 PC 上工作,但在 Mac 上不能,反之亦然。在 VisualStudioPC、 VisualStudioMac 和 Xcode 之间还有改进资产管理的空间。

我重新生成了所有的图标,并手动将它们一个接一个地插入到 Assets.xcassets 视图中。

当然,另外,Info.plist 必须具有以下键:

<key>XSAppIconAssets</key>
<string>Media.xcassets/AppIcons.appiconset</string>

然后我重建了一切,瞧,成功了。

在上传到 AppStoreConnect 之前查看图标是否正确生成的提示是部署到模拟器,或者在 Xcode-> Organizer 工具中检查 IPA 是否得到了正确的图标。否则,这是开发“没有图标”,它将不会好。

另外,一些应用程序图标生成的网站没有包含我需要的一切。最后,我使用这一个快速测试(但我更喜欢本地工具-见上文) : https://www.iconsgenerator.com/Home/AppIcons

此外,因为你可能会有问题上传没有 Launchimage (相关的故事板,也存储在 Asset.xcassets,有一个很棒的应用程序,可以同时生成应用程序图标和启动图像: https://github.com/raphaelhanneken/iconizer

在我的案例中,我有一个应用程序商店营销图标(1024x)的 PNG 图像,

您必须为这个 App Store 图标(1024x)使用 jpeg,非透明图像,这个问题就解决了。

上面的内容对我来说都不起作用。我需要从构建设置中移除 Development Assets的值。

  1. 删除资产目录下现有的“资产”文件夹

  2. “添加新的”一个空的“资产目录”

  3. 接下来是: 使用资产目录管理图标

  4. Plist 更新: + 1您的版本和 build # ,并添加一些早期 iOS 在参考资料中作为“必需”的图标

    <dict>
    <key>CFBundlePrimaryIcon</key>
    <dict>
    <key>CFBundleIconName</key>
    <string>AppIcon</string>
    <key>CFBundleIconFiles</key>
    <array>
    <string>Icon152</string>
    <string>Icon167</string>
    <string>Icon76</string>
    </array>
    </dict>
    

苹果回复道:

以下构建已完成处理: Platform: iOS App 名称: FltLogger Build Number: 1.6

下次把这个放在这里,不仅仅是为了帮忙,狩猎愉快..。

If anyone is, like me on this page amongst many because you cannot get an app pushed to the app store -- and when you do, you get an email about missing asset catalog.... 16.10.0 is completely broken. 16.11.0 preview does not fix it either. I have one Xamarin project still publishable, but I suspect if I deleted the build cache on my mac it wouldn't ever work again. After 5 days solid, I downgraded to 16.8.6 (likely did not need to go that far back). I started getting useful warnings about images again, and my asset catalog not only generates an asssets.cer, but the bundle has the catalog properly added. Whether it started working from visual studio or the mono downgrade to the old version, I do not know, but hopefully this saves someone the wasted days I endured trying to adjust info.plist, catalog.json, .csproj, wiping mac side caches, inspecting published files, 1000's of build/archive/transports, and renaming and double-checking thousands of icon files, completely rebuilding projects, etc.. You can work around the missing asset catalog by implementing the CFBundle icon files if you manage to get them perfect, but if you succeed at that, you will upload the app, it will promptly disappear, and appstore connect will email you that all apps now need asset catalogs.

对我来说,关键是选中 Assets.xcassets的目标成员复选框

我有这个问题与 Flutter应用程序时,试图上传一个档案。

解决方案:

  • 将以下内容添加到 Info.plist
<key>CFBundleIconName</key>
<string>AppIcon</string>
  • Tools > Flutter > Flutter Clean
  • Tools > Flutter > Open iOS module in Xcode

创建一个新的归档文件并上传。

在我的例子中,我尝试了所有方法,唯一有效的方法是删除整个 xasset 文件夹并创建一个包含图标文件的新文件夹。

如果您仍然面临这个问题,并且正在使用 XCode13,也许解决方案是删除 Info.plist键。我在这里解释更多: https://stackoverflow.com/a/71016589/15860448

就我而言,我已经做了我应该做的一切。列表、应用程序图标、常规设置和生成设置中的设置。

问题实际上是 AppStoreConnect 中的应用程序的名称与 XCode 中的应用程序的名称不同(只有一个大写字母)。我所做的就是用正确的名字创建一个新项目,复制/粘贴所有东西,然后就成功了。