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

时间:2017-09-14 10:30:55

标签: ios xcode itunesconnect ios11 xcode9

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

  

亲爱的开发人员,

     

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

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

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

25 个答案:

答案 0 :(得分:60)

我一整天都在苦苦挣扎,一直到深夜尝试我能想到的每一个排列,并最终找到了这个解决方案 - 希望这可以帮助某人避免经历这场噩梦。

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

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

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

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

点击你的应用名称然后选择GENERAL选项卡进入应用程序的主设置,然后在App Icons和Launch Images部分下单击App Icons source旁边的按钮并选择使用资产目录 - 选择您的资产目录的名称 - 我的名为Assets.xcassets - 并且说要使用该弹出窗口上的按钮转换(迁移)应用程序 - 我还检查了该框以转换启动图像 - 当您完成应用程序图标源和启动图像源将在下拉列表中显示名称。

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

祝你好运 - 当你尝试了很多合理的解决方案时,我会同情你可能会感受到的这种多少神秘错误的痛苦。这有时是软件工程师的生活......;)

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

答案 1 :(得分:36)

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

Info.plist:

permutation_cases = list(itertools.permutations(range(2), 2))
select_from = list(itertools.combinations(range(len(list_of_lists)), 2))

all_possibility = []
for selecting_index in select_from:
        selected = [list_of_lists[i] for i in selecting_index ]
        cases = list([selected[k][i] for i, k in enumerate(comb)] for comb in permutation_cases)
        for item in cases:
            all_possibility.append(item)
print(all_possibility)

enter image description here

enter image description here

Download Working AppIcons Assets Here

答案 2 :(得分:30)

我认为,由于Xcode 9 iOS 11版本需要将iTunes Connect App Icon与二进制本身捆绑在一起,而二进制本身可以直接在早期版本的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
  • 85.5pt 2x
  • 1024pt 1x

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

答案 3 :(得分:12)

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

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

答案 4 :(得分:9)

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

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

在项目中 - >目标属性 - 常规选项卡 - >应用程序图标和启动图像。     应用程序图标 - >选择使用资产目录 然后它会要求转换(迁移)一个警报并创建一个.xcassets文件。选中此框也可以转换启动图像 完成后,应用程序图标源和启动图像源将在下拉列表中显示名称。 添加应用图标和其他图标

答案 5 :(得分:8)

我遇到了同样的问题并解决了以下问题。

以下是分步指南。

第1步:

使用1024 * 1024.png

创建一个图标

第2步:

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

enter image description here

第3步:

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

第4步:

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

enter image description here

第5步:

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

enter image description here

你很高兴!...

答案 6 :(得分:8)

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

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

Info.plist:

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

同样在项目中 - 目标 - &gt;构建设置 - &gt;资产目录编译器 - 部分,确保包含图标的资产目录的名称显示在资产目录应用程序图标集名称中。

答案 7 :(得分:4)

我也遇到了&#34;缺少Info.plist值 - 捆绑包中缺少Info.plist键CFBundleIconName的值...&#34; 错误并希望留下简明的答案,希望能帮助下一个人。

该应用未使用资产目录。虽然这不是此错误所说的,但这是解决此问题所需的,但是如何添加值非常重要。仅将缺少的键\值手动添加到.plist是不够的。除此之外还有更多。您还需要从.plist中删除CFBundleIcons值。这可以手动完成,但我建议使用XCode界面通过项目属性 - 常规应用程序图标和启动图像进行编辑。这就是我让我工作的方式。

下面是对我的.plist进行更改的屏幕截图。

Updated .PList

App Icons and Launch Images

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

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

现在点击它打开您的新资产目录 点击&#34; AppIcon&#34;部分并将所需图像拖动到适当的位置。

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

您现在应该可以存档您的应用并将其提交到应用商店。

答案 8 :(得分:3)

对于上述答案没有帮助的人(在这个问题上花了很多头墙敲打):

确保检查资产目录的目标成员资格!如果你没有在这里正确链接成员资格,你将得到同样的超级通用错误(Apple应该对错误消息做些什么)。

enter image description here

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

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

希望这有助于打击此人的人!

答案 9 :(得分:3)

请按照以下步骤操作。

  1. 在您的项目中添加新文件&gt;&gt;资产Catlog。
  2. 转到在XCODE中点击您的项目&gt;&gt;一般&gt;&gt;应用图标。见screenshot。 这将在您的资产中自动创建AppICon和LaunchImage规范,之后您可以将Appstore图标和其他图标拖放到其中。

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

  4. 此plist文件中的此条目。

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

答案 10 :(得分:2)

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

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

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

答案 11 :(得分:1)

更新版本&gt;后,Visual Studio 17(v-15.2)出现问题。 15.2您将在AssetCatalog中看到App-Icon-1024x1024占位符&gt;媒体&GT; AppIcons

enter image description here

答案 12 :(得分:1)

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

答案 13 :(得分:1)

每位应用开发者都使用着名的&#34; Icon Dog&#34;

(很遗憾他们改名了!)

  

enter image description here

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

它是iOS开发人员使用的最受欢迎的应用程序,是一种邪教。

它立即解决了所有问题。

答案 14 :(得分:1)

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

答案 15 :(得分:1)

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

答案 16 :(得分:0)

对于适用于iOS 11应用的Xcode 9.2,应该澄清几点。

1-此错误应该来自资产目录中没有图标资产。

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

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

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

3-此错误与1024x1024&#34; App Store Icon&#34;无关。

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

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

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

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

答案 17 :(得分:0)

我在这件事上也遇到了很多问题 - 我不断收到错误的CFBundleIconName,而我的图标找不到。所以这是我的故事,也许对某人有帮助。顺便说一句,我正在使用Visual Studio和Xamarin。

  1. 使用AppIcons将资产目录添加到您的项目中(资产的实际名称并不重要,只是它适用于应用程序图标)。添加所有必要的图标大小。对于应用程序商店&#39; icon我在论坛中添加了一个没有@的图标作为论坛建议的人,但我不确定,是否100%是必要的。为了生成不同的图标大小,有很多网站和工具可以为您做到这一点,您只需要提供1024x1024。他们将产生其余的。

  2. 在&#39; Visual Assets&#39;下的Info.plist中然后是应用程序图标&#39;将源设置为您刚刚创建的资产。

  3. 现在查看您的Info.plist。 不要使用外部编辑器打开它,因为在构建项目后,所有更改都将被覆盖。执行以下操作 - 在解决方案资源管理器中右键单击Info.plist,然后选择打开方式 - &gt;通用PList编辑。

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

    -Property = CFBundleIconName,Type = String。 Value = Assets.xcassets / AppIcons.appiconset -Property = XSAppIconAssets,Type = String。值= Assets.xcassets / AppIcons.appiconset

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

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

  7. 我希望我有所帮助:)

答案 18 :(得分:0)

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

答案 19 :(得分:0)

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

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

答案 20 :(得分:0)

在我的案例中,我有一个App Store Marketing Icon(1024x)的PNG图片,

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

答案 21 :(得分:0)

以上对我没有任何帮助。我需要从构建设置中删除Development Assets的值。

答案 22 :(得分:0)

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

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

  3. 关注了Managing Icons with Asset Catalogs

  4. info.plist 更新:+1 您的版本并构建 # 并添加放置在资源中的图标作为“必需的?”来自一些早期的 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>
    

Apple 回复:

<块引用>

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

下次把这个放在这里尽可能多地帮助我。狩猎快乐...

答案 23 :(得分:0)

对我来说,关键是选中 serialize

的目标成员资格复选框

答案 24 :(得分:0)

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

修复:

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

创建新存档并上传。