首页 文章

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

提问于
浏览
63

我正在努力使用使用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键设置为项目名称或图像文件名,然后再次提交应用程序 . 但是,我仍然收到与上面相同的电子邮件 .

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

18 回答

  • 30

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

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

    缺少Info.plist值 - 捆绑包中缺少Info.plist密钥CFBundleIconName的值 . bla bla bla ...

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

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

    Go to the main setting for the app by clicking your app name and then selecting the GENERAL tab then under App Icons and Launch Images section click the button beside App Icons source and choose to use an asset catalog - select the name of your asset catalog - mine was called Assets.xcassets - and say to convert (migrate) the app with the button on that popup - I also checked the box to convert launch images too - when you are done the App Icons Source and the Launch Images Source will have names in the dropdown list.

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

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

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

  • 8

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

    Info.plist:

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

    enter image description here

    enter image description here

    Download Working AppIcons Assets Here

  • 35

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

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

    enter image description here

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

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

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

  • 0

    我想通了,因为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.5pt2倍

    • 1024pt 1x

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

  • 1

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

    Target . . . Build Settings . . . Asset Catalog Compiler - Options 部分中,确保包含图标的资产目录的名称显示在 Asset Catalog App Icon Set Name 中 . 出于某种原因,我的 Asset Catalog App Icon Set Name 是空白的 .

  • 12

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

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

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

  • 1

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

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

    Info.plist:

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

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

  • 1

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

    这是一步一步的指导方针 .

    第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

    你已准备好出发!...

  • 0

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

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

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

    Updated .PList

    App Icons and Launch Images

    如果您还没有新的资产目录,请将其添加到项目中 .
    单击“导航”窗口顶部的应用程序名称
    选择GENERAL选项卡
    向下滚动到"App Icons and Launch Images"部分
    单击"use an asset catalog"按钮
    注意:我创建了自己的资产目录和iOS App图标集,但链接到现有的图像集并没有手动添加图像集 .

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

    现在点击它打开您的新资产目录
    单击"AppIcon"部分并将所需图像拖动到适当的位置 .

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

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

  • 0

    请按照以下步骤操作 .

    • 在您的项目中添加新文件>> Asset Catlog .

    • Goto在XCODE >> General >> App Icons中单击您的项目 . 见screenshot . 这将在您的资产中自动创建AppICon和LaunchImage规范,之后您可以将Appstore图标和其他图标拖放到其中 .

    • 另外加
      <key>CFBundleIconName</key> <string>AppIcon</string> .

    plist文件中的此条目 .

    将您的二进制文件上传到Itunes .

  • 9

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

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

    • 制作应用图标的副本并启动图像并将其存储在单独的位置 .

    • 对于干净启动,删除对应用程序图标的引用并从info.plist启动图像,这意味着删除CFBundleIconFiles键下的值 .

    • 从资源文件夹中删除应用程序图标并启动图像 .

    • 使用删除选项删除您在'Asset Catalogs'下声明的任何'Assets'或'Media' .

    • 您的项目中可能仍存在名称为Assets.xcassets或Media.xcassets(或类似名称为.xcassets文件夹)的文件夹 . 它们可以位于Resources文件夹的外部或内部 . 删除所有.xcassets文件夹 .

    • 现在在像notepad这样的编辑器中打开项目文件(即Visual Studio中的.csproj),看看是否有任何引用指向.xcassets文件夹中的文件 . 删除所有此类引用 . 还要检查没有引用指向应用程序图标或启动此文件中的Resources文件夹下的图像,并删除它们 .

    • 检查以确保info.plist中不再存在XSAppIconAssets和XSLaunchImageAssets键 . 如果它们仍然存在,请删除它们 .

    • 此时您已删除任何以前的文件或对应用程序图标的引用,并从项目中启动图像 . 如果它们仍然存在,请返回并删除它们 . 现在重新开始在'Asset Catalogs'下创建一个新的'Asset'或'Media',它会在你的项目中创建一个.xcassets文件夹 . 将步骤1中的应用程序图标(并根据需要启动图像)复制到新.xcassets文件夹下的相应文件夹中 . 确保包含所有必需的图像 .

    • 检查以确保info.plist现在包含您创建的新'Asset'的XSAppIconAssets(以及XSLaunchImageAssets,如果需要)键值 . 您的项目文件(Visual Studio中的.csproj)现在应该包含对您添加到新'Asset'的每个图像的引用 . 不需要任何额外的图像,而不是项目所需的图像 . 我建议从您的资产中删除任何额外的图像 .

    • 如果您添加了其他解决方案中提到的名为CFBundleIconName的密钥,请从info.plist中删除此密钥 . 这不是必需的 . 现在您已准备好将应用程序提交到商店 .

  • 8

    无需编辑info.plist . 填写 all the images placeholders for AppIcon in images.xcassets 将解决与图标相关的错误 .

  • 2

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

    enter image description here

  • 2

    每个应用程序开发人员都使用着名的“Icon Dog”

    (很遗憾他们改名了!)

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

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

    它立即解决了所有问题 .

  • 3

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

  • 4

    对于iOS 11应用程序的Xcode 9.2,应该澄清几点 .

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

    (通过提交没有资产目录的应用程序来获得此错误) .

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

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

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

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

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

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

    5-缺少Info.plist中缺少的CFBundleIconName .

  • 59

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

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

    • 在“Visual Assets”下的Info.plist中,然后“App Icons”将源设置为您刚刚创建的资产 .

    • 现在查看您的Info.plist . Do not open it with an external Editor ,因为在构建项目后,所有更改都将被覆盖 . 执行以下操作 - 在解决方案资源管理器中右键单击Info.plist,然后选择打开方式 - >通用PList编辑器 .

    • 检查您是否有以下条目:

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

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

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

    我希望我有所帮助:)

  • 1

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

相关问题