繁体   English   中英

Xcode9 iOS11 应用程序版本中缺少 CFBundleIconName

[英]Missing CFBundleIconName in Xcode9 iOS11 app release

我正在努力使用使用 iOS 11 SDK 构建的 Xcode 9 发布我们应用程序的新版本。 归档和上传二进制文件很顺利,没有任何问题。 该构建在 iTunes Connect 中的“活动”下显示为“正在处理”,它消失了,我收到了以下电子邮件。

亲爱的开发者,

我们发现您最近交付的“”存在一个或多个问题。 要处理您的交付,必须更正以下问题: 缺少 Info.plist 值 - 捆绑包“”中缺少 Info.plist 键 CFBundleIconName 的值。 在资产目录中提供图标的应用程序也必须提供此 Info.plist 键。 有关详细信息,请参阅http://help.apple.com/xcode/mac/current/#/dev10510b1f7 更正这些问题后,您可以重新交付更正后的二进制文件。 问候, App Store 团队

该链接提供了有关资产包的一些信息。 我尝试将 CFBundleIconName 键设置为项目名称或图像文件名并再次提交应用程序。 但是,我仍然收到与上述相同的电子邮件。

任何帮助建议将不胜感激。

我整天都在为此苦苦挣扎,直到深夜尝试了我能想到的每一种排列方式,最后找到了这个解决方案——希望这可以让某人免于经历这场噩梦。

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

缺少 Info.plist 值 - 捆绑包中缺少 Info.plist 键 CFBundleIconName 的值。 呜呜呜……

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

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

通过单击您的应用程序名称,然后选择常规选项卡,然后在应用程序图标和启动图像部分下单击应用程序图标源旁边的按钮并选择使用资产目录,进入应用程序的主要设置 - 选择您的资产目录的名称 -我的被​​称为 Assets.xcassets - 并说使用该弹出窗口上的按钮转换(迁移)应用程序 - 我还选中了转换启动图像的框 - 完成后,应用程序图标源和启动图像源将具有名称在下拉列表中。

单击它转到资产目录 - 我的再次是 Assets.xcassets,然后单击 AppIcon 部分并将您的 1024x1024 图像拖到 App Store iOS 1024pt 井/槽中。 最后一次存档您的应用程序并将其提交到应用程序商店 - 那时希望不会再收到来自地狱的电子邮件,因为我开始打电话给他们关于您的应用程序被拒绝,您可以返回 iTunesConnect 提交您的应用程序。

祝你好运——当你尝试了很多合理的修复但没有成功时,我很同情你可能会对这个几乎是神秘的错误感到痛苦。 有时这就是软件工程师的生活...... ;)

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

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

信息列表:

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

在此处输入图像描述

在此处输入图像描述

在此处下载工作 AppIcons 资产

我发现,由于 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 图标应放置在位于应用程序包中的资产目录中。

添加应用商店图标

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

仅添加该图像不会通过 iTunes 存档上传过程,因此我们需要添加以下大小的所有应用图标图像:

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

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

每当我为我的一个应用程序的新版本提交二进制文件时,我都会收到相同的电子邮件。 我尝试了这里列出的所有补救措施,但没有任何效果。 然后我又做了一个有效的改变。

目标中。 . . 构建设置。 . . Asset Catalog Compiler - Options部分,确保包含图标的资产目录的名称显示在Asset Catalog App Icon Set Name中。 出于某种原因,我的资产目录应用程序图标集名称为空白。

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

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

在项目 -> 目标属性 - 常规选项卡 -> 应用程序图标和启动图像中。 应用程序图标 —> 选择使用资产目录然后它会要求转换(迁移)并发出警报并创建一个 .xcassets 文件。 选中该框以转换启动图像。
完成后,App Icons Source 和 Launch Images Source 将在下拉列表中有名称。 向其中添加应用程序图标和其他图标

我有同样的问题并解决如下。

这是分步指南。

步骤1:

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

第2步:

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

在此处输入图像描述

第 3 步:

它会要求您输入您的电子邮件地址。 输入它,然后几秒钟后,您将获得所有需要的图像尺寸到您的邮箱中。 下载该压缩文件夹并解压缩。

第4步:

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

在此处输入图像描述

第 5 步:

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

在此处输入图像描述

你已准备好出发!...

我也遇到了“缺少 Info.plist 值 - 捆绑中缺少 Info.plist 键 CFBundleIconName 的值...”错误,并想留下一个简洁的答案,希望能帮助下一个人。

该应用程序未使用资产目录。 尽管这不是此错误所说的,但这是解决此问题所必需的,但是如何添加值很重要。 手动将这个缺失的 key\value 添加到 .plist 是不够的; 不仅如此。 您还需要从 .plist 中删除 CFBundleIcons 值。 这可以手动完成,但我建议使用 XCode 界面通过 Project Properties - General App Icons and Launch Image 进行编辑。 这就是我让我的工作的方式。

下面是对我的.plist所做更改的屏幕截图。

在此处输入图像描述

应用程序图标和启动图像
在此处输入图像描述

如果您还没有新的资产目录,请向您的项目添加一个新的资产目录。
单击导航器窗口顶部的应用程序名称
选择常规选项卡
向下滚动到“应用程序图标和启动图像”部分
单击“使用资产目录”按钮
注意:我创建了自己的资产目录和 iOS 应用程序图标图像集,但链接到现有的对我不起作用,因为它创建了一个具有空值\图像的新图像集。 我不得不将它们全部删除,并让这个过程为我创建它们。 如果您刚刚添加资产目录来解决此问题,请让此过程为您创建它,不要手动添加图像集。

点击转换\迁移应用
单击按钮后,我没有自动刷新任何内容。 我离开然后回到设置屏幕,现在在下拉列表中分配了值。

现在通过单击打开您的新资产目录
单击“AppIcon”部分并将所需的图像拖到适当的位置。

App Store iOS 1024pt 图标和任何其他 iPhone\iPad\Universal 应用程序所需的图标需要 1024x1024 图像。 1024x1024px 图像也称为营销图标。 没有它,您将无法提交您的应用程序。

您现在应该能够归档您的应用并将其提交到应用商店。

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

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

信息列表:

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

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

对于上述答案没有帮助的任何人(在这个问题上花了很多时间):

确保检查资产目录的目标成员! 如果您没有在此处正确链接会员资格,您将收到同样的超级通用错误(Apple 应该对错误消息采取措施)。

在此处输入图像描述

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

您根本不需要编辑 plist,这些答案中的大多数都是误导性的。

希望这对遇到这个问题的人有所帮助!

请按照以下步骤操作。

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

  3. 还添加
    <key>CFBundleIconName</key>
    <string>AppIcon</string>
    <key>CFBundleIconName</key>
    <string>AppIcon</string>

您的 plist 文件中的此条目。

将您的二进制文件上传到 iTunes。

我终于想出了一个干净的解决方案来解决这个问题,它不需要向 info.plist 添加任何键,例如 CFBundleIconName。 我在更新应用商店中的旧应用以针对 SDK 11.2 构建时这样做(相信我有相当多的挫败感)。 我在 PC 上的 Visual Studio 中使用 Xamarin,但此解决方案应该在任何其他 IDE 或框架(例如 XCode)中工作。 该解决方案的要点是 info.plist 文件和 Resources 文件夹不再需要在应用程序图标和启动图像方面发挥任何作用。 事实上,您可以从 info.plist 文件中删除 CFBundleIconFiles 键,它不会对您的项目产生任何影响。

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

  1. 复制您的应用程序图标并启动图像并将它们存储在单独的位置。
  2. 为了彻底删除对应用程序图标的引用并从 info.plist 启动图像,这意味着删除 CFBundleIconFiles 键下的值。
  3. 从资源文件夹中删除应用程序图标和启动图像。
  4. 使用删除选项删除您在“资产目录”下声明的任何“资产”或“媒体”。
  5. 名为 Assets.xcassets 或 Media.xcassets 的文件夹(或类似名称的 .xcassets 文件夹)可能仍存在于您的项目中。 它们要么在资源文件夹之外,要么在资源文件夹内。 删除所有 .xcassets 文件夹。
  6. 现在在记事本之类的编辑器中打开您的项目文件(即 Visual Studio 中的 .csproj),查看是否有任何引用指向 .xcassets 文件夹中的文件。 删除所有此类引用。 还要检查此文件中的 Resources 文件夹下是否没有指向应用程序图标或启动图像的引用,并将它们也删除。
  7. 检查以确保 info.plist 中不再存在 XSAppIconAssets 和 XSLaunchImageAssets 键。 如果它们仍然存在,请删除它们。
  8. 此时,您已从项目中删除了任何以前的文件或对应用程序图标和启动图像的引用。 如果它们仍然存在,请返回并删除它们。 现在重新开始在“资产目录”下创建一个新的“资产”或“媒体”,这会在您的项目中创建一个 .xcassets 文件夹。 将步骤 1 中的应用程序图标(并在需要时启动图像)复制到新的 .xcassets 文件夹下的相应文件夹中。 确保包含所有必需的图像。
  9. 检查以确保 info.plist 现在包含您创建的新“资产”的 XSAppIconAssets(和 XSLaunchImageAssets,如果需要)键值。 您的项目文件(在 Visual Studio 中为 .csproj)现在应该包含对您添加到新“资产”中的每个图像的引用。 除了项目所需的图像之外,不需要任何额外的图像。 我建议从您的资产中删除任何额外的图像。
  10. 如果您添加了其他解决方案中提到的名为 CFBundleIconName 的键,请从 info.plist 中删除此键。 这不是必需的。 现在您已准备好将您的应用程序提交到商店。

无需编辑 info.plist。 通过在images.xcassets 中填写 AppIcon 的所有图像占位符,可以解决与图标相关的错误。

更新 Visual Studio 17(v-15.2) 版本 > 15.2 后,您将在 AssetCatalog > Media> AppIcons 中看到 App-Icon-1024x1024 占位符

在此处输入图像描述

每个应用程序开发人员都使用著名的“图标狗”

(很遗憾他们改名了!)

在此处输入图像描述

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

它无疑是 iOS 开发者使用的排名第一的最受欢迎的应用程序,有点像邪教。

它立即解决了所有问题。

在我的情况下; 在此页面中完成所有这些操作后,不要忘记再次归档您的项目 :)

如果有人像我一样出现在这个页面上,因为你无法将应用推送到应用商店——当你这样做时,你会收到一封关于缺少资产目录的电子邮件...... 16.10.0 完全崩溃了。 16.11.0 预览版也没有修复它。 我有一个 Xamarin 项目仍然可以发布,但我怀疑如果我删除了我的 mac 上的构建缓存,它就不会再工作了。 稳定 5 天后,我降级到 16.8.6(可能不需要回到那么远)。 我再次开始收到有关图像的有用警告,我的资产目录不仅生成了一个assets.cer,而且该捆绑包还正确添加了目录。 无论是从 Visual Studio 开始工作还是从 Mono 降级到旧版本,我不知道,但希望这可以节省我为调整 info.plist、catalog.json、.csproj、擦除 mac 端缓存而忍受的浪费时间,检查已发布的文件、1000 个构建/归档/传输,以及重命名和仔细检查数千个图标文件,完全重建项目等。如果您设法获得它们,您可以通过实现 CFBundle 图标文件来解决丢失的资产目录完美,但如果你成功了,你将上传应用程序,它会立即消失,appstore connect 会通过电子邮件告诉你所有应用程序现在都需要资产目录。

对我来说,关键是检查Assets.xcassets的目标成员资格复选框

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

1-此错误应该是由于资产目录中没有图标资产。

(通过提交没有资产目录的应用程序出现此错误)。

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

(在我的例子中,它是一个仅限 iPhone 的应用程序,我添加了一些 120 倍和 180 倍的占位符图像)。

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

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

4-与Apple文档相反,即使使用(Xcode 9 +为iOS 11编写),您也可以使用该网站提交App Store图标。

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

5- Info.plist 中缺少的 CFBundleIconName 未更改。

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

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

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

我希望我能有所帮助:)

我使用了@Omair 的答案,它是正确的,但是,然后我收到了找不到各种图标的错误。 问题是创建资产目录时 VS2017 的错误。 添加新资产目录时,会在项目的根目录下创建目录文件夹,而不是在 /resources 下。 但是,info.plist 中的条目具有 /resources 下的路径。 从资产目录的路径中删除 /resources 后,一切正常。 希望这对某人有帮助!

我将在 Xamarin 的范围内回复以解决此问题 - 这与 Xcode 相似但不相同。 在 macOS 上安装 Xcode 11 使用 VisualStudio Community (16.6 Windows/ 8.6.1 macOS)

在 Info.plist 中添加CFBundleIconName没有帮助,现在不再使用此键(对于针对 iOS 11 及更高版本的构建,仅使用 Assets.xcassets - 它也可以是 Media.xcassets,您可以选择任何您想要的,但是我将其称为 Assets.xcassets)。

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

Xamarin 正在处理,嗯......让我们混淆地将 Asset.xcassets 放入 .csproj 文件中。 有时引用 Contents.json 文件不足以描述所有资产,您还必须导入每个文件,因此它可以在 PC 上工作,但不能在 Mac 上工作,反之亦然。 Visual Studio PC、Visual Studio Mac 和 Xcode 之间存在改进资产管理的空间。

我重新生成了所有图标,并手动将其一一插入到 Assets.xcassets 视图中。

当然,除此之外,Info.plist,你必须有以下key:

<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

就我而言,问题是我有一个 App Store Marketing Icon (1024x) 的 PNG 图像,

您必须为此 App Store 图标 (1024x) 使用 jpeg,非透明图像,问题就消失了。

以上没有对我有用。 我需要从 Build Settings 中删除Development Assets的值。

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

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

  3. 跟随使用资产目录管理图标

  4. info.plist 更新:+1 您的版本并构建#'s 并添加放置在资源中的图标作为“必需?” 由一些早期的 iO​​S

     <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>

苹果回复:

以下构建已完成处理:平台:iOS 应用名称:FltLogger 内部版本号:1.6

下次把这个放在这里,就像帮助我一样。 狩猎愉快...

尝试上传档案时,我遇到了Flutter应用程序的这个问题。

使固定:

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

创建一个新的存档并上传。

就我而言,我尝试了所有方法,唯一有效的是我必须删除整个 xassets 文件夹并创建一个包含图标文件的新文件夹。

如果您仍然面临该问题并且您正在使用 XCode 13,则解决方案可能是删除info.plist键。 我在这里解释更多: https ://stackoverflow.com/a/71016589/15860448

就我而言,我已经做了我应该做的一切。 plist、AppIcon、General 和 Build Settings 中的设置。

真正的问题是 AppStoreConnect 中的应用程序名称与 XCode 中的应用程序名称不同(一个大写字母)。 所以我所做的是创建一个具有正确名称的新项目,只需复制/粘贴所有内容即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM