缺少必需的图标文件。该包不包含iPhone / iPod Touch的应用程序图标,大小为'120x120'像素。

14

我最近在应用商店上传应用时遇到了这个错误:

iTunes Store operation failed.
Missing required icon file. The bundle does not contain an app icon for iPhone / iPod Touch of exactly '120x120' pixels, in .png format for iOS versions >= 7.0.

我已经添加了一个名称为 "Icon-120.png" 和 "Icon-60@2x.png" 的 120像素图标文件,并检查它是否被添加在 Build Phases > Copy Bundle Resources 中,但是我仍然得到相同的错误。

有什么其他的建议吗,我可以尝试解决这个问题吗?

如果有帮助的话,我一直在阅读这篇非常冗长的SO回答:'Missing recommended icon file - The bundle does not contain an app icon for iPhone / iPod Touch of exactly '120x120' pixels, in .png format' 但我还没有找到问题所在。

另外,我已经进行了Build > Clean并重新启动了Xcode。

====

$ file Icon-120.png 
Icon-120.png: PNG image data, 120 x 120, 8-bit/color RGBA, non-interlaced
$ file Icon-60\@2x.png 
Icon-60@2x.png: PNG image data, 120 x 120, 8-bit/color RGBA, non-interlaced

你尝试过使用资源目录吗?如果你填满了所有的插槽,应该就没问题了。可能是Xcode没有意识到那些png文件是图标。也要确保大小和像素密度是正确的。 - theMikeSwan
请在终端中输入 $ file Icon-120.png 并将输出发布。 - l'L'l
已完成。请见上文。 - Snowcrash
@l'L'l .plist 中没有列出任何图标。之前所有的操作都可以正常工作,而不需要在那里指定它们。 - Snowcrash
1
哈利路亚。将图标添加到“CFBundleIconFiles”中就完成了任务。 - Snowcrash
显示剩余6条评论
17个回答

20

尝试以下步骤来在高级版的Sierra上使用Xcode 9:

  1. 前往“产品”菜单>“归档”,右键点击您的新构建>“在Finder中显示”。

  2. 打开终端并切换到存档文件夹:(键入cd +空格,拖动您的新构建* .xcarchive)

 cd /Users/[user]/Library/Developer/Xcode/Archives/[XXX].xcarchive  
  • 使用 @stubyte 的代码:

     find Products/ -name Info.plist -print0 | xargs -0n1 plutil -replace BuildMachineOSBuild -string 16A323
    
  • 返回Xcode > 窗口 > 组织 > 上传到App Store...

  • 已修复:

    ERROR ITMS-90022:"缺少所需的图标文件。该包中不包含精确为'120x120'像素,iOS版本>= 10.0的iPhone / iPod Touch的应用程序图标(.png格式)。

    ERROR ITMS-90023:"缺少所需的图标文件。该包中不包含精确为'167x167'像素,支持iPad Pro的iOS版本的iPad应用程序图标(.png格式)。

    ERROR ITMS-90023:"缺少所需的图标文件。该包中不包含精确为'152x152'像素,iOS版本>= 10.0的iPad应用程序图标(.png格式)。

    仍有警告:

    WARNING ITMS-90704:"缺少营销图标。iOS应用程序必须包括一个1024x1024px的PNG格式营销图标。不包含营销图标的应用程序无法提交App Review或Beta App Review。

    这个临时解决方案对我有效。


    你的解决方案是有效的,但如果我提交我的应用程序,它是否会在iOS 11上显示应用程序图标?当我通过Xcode运行应用程序到任何iOS 11设备时,我无法看到应用程序图标。然而,在iOS 10设备上可以显示。 - Rahul Vyas
    1
    当我使用它来提交应用程序时,这对我失败了,苹果在邮件中发送相同的错误(120x120)丢失,苹果拒绝了二进制文件。 - Rahul Vyas
    谢谢,这是完美详细的答案。只是一个更新是,在步骤之后我们必须创建ipa(用于手动上传)。 返回Xcode > 窗口 > 组织者 > 上传到应用商店。 - Sagar Panwala
    这对我来说是有效的,但在应用商店处理时,它抛出了相同的错误并且构建被拒绝了。 - Sanju Rao
    你能解释一下为什么这样修复它吗?我几个小时前就看到了,但是认为这很不专业。我尝试了所有其他方法,但这是唯一有效的解决方案。 - Barry
    说实话,我也不知道 ;). 这不是一个真正的黑客行为,更像是某个人在将一个版本迁移到另一个版本时出了问题,而这是最好的修复方法,而不必重新创建项目。 - Matt Hudson

    11
    如果您使用的是Xcode 9,请尝试以下操作。查找xcarchive文件,然后执行此命令。 < p > < code > find Products / -name Info.plist -print0 | xargs -0n1 plutil -replace BuildMachineOSBuild -string 16A323 请参考开发者网站上stubyte的回答。访问开发者网站

    当我使用这个提交应用程序时,它对我失败了,苹果在邮件中发送了相同的错误(120x120)缺失,而且苹果拒绝了二进制文件。 - Rahul Vyas

    4
    在“常规”视图中,进入“应用程序图标和启动图像”部分,确保“应用程序图标源”与“Images.xcassets”文件链接。

    我曾经为了弄清楚为什么Xcode 9看不到Appicon文件夹中的120x120、76x76和152x152图标而感到疯狂。最后,我尝试操作了一下选择元素(首先它要求我迁移我不知道的东西——我必须删除已创建的元素——然后在出现AppIcon选项时进行选择),这样就成功了。Eran,非常感谢你。 - rcerecedar

    4

    由于您提到图标文件名不在Info.plist中,您需要添加:

    <key>CFBundleIconFiles</key>
    <array>
        <string>Icon-120.png</string>
    </array>
    

    现在似乎需要将图标与您的应用程序相关联。


    这应该是你资产目录中AppIcons的名称,而不是单个图标的文件名。 - Nick Turner

    3
    在我的情况下,由于某些原因,AppIcon资源并不是应用程序目标的一部分。勾选此复选框即可解决问题: enter image description here

    1
    太好了!对我有用。有时候这个复选框是禁用的,那么只需要在构建阶段的“复制包资源”下加入Images.xcassets即可。 - Rajkumar Bansal

    1
    我也遇到了同样的问题,我通过以下URL创建了一个应用程序图标:

    https://appicon.co/

    适用于iPhone和iPad。它给我一个.zip文件,我解压它并将“AppIcon.appiconset”移动到我的应用程序的xcassets中。

    现在清理项目并创建新存档,并将其上传到AppStore,然后它就可以工作了,

    谢谢


    为什么是-1,请让我知道。 - Chandni

    1

    另一个简单的解决方法是:

    我在XCode 9.0中遇到了类似的问题,一个在XCode 8和iOS 10下工作得非常好的项目,在我升级解决方案后突然失去了它的图标(仅在iPad上)。

    我试过sRGB和透明度的处理,把我的头发都拔光了。

    结果发现,我的目标info.plist文件中仍有以下空条目:

    CFBundleIcons~ipad

    我早就开始在目标构建设置中指定这个了。

    解决方法很简单,只需从info.plist文件中删除此条目(点击“-”按钮即可),重新构建和测试,一切恢复正常。


    1
    如果您正在使用 images.xcassets 文件,请确保该文件包含在 Build Phases > Copy Bundle Resources 列表中。我继承了一个没有使用此文件的项目,迁移到使用此文件作为应用程序图标,但没有将其添加到Copy Bundle Resources列表中。现在,您可能希望有更好的错误消息,但这解决了问题。(根据上面引用stubyte的Sahil的建议,编辑plist文件也可以解决此问题。)

    0

    我通过将下面提供的代码复制到PodFile中解决了这个问题。

    post_install do |installer|
      copy_pods_resources_path = "Pods/Target Support Files/Pods-PROJECT_NAME/Pods-PROJECT_NAME-resources.sh"
      string_to_replace = '--compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"'
      assets_compile_with_app_icon_arguments = '--compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${BUILD_DIR}/assetcatalog_generated_info.plist"'
      text = File.read(copy_pods_resources_path)
      new_contents = text.gsub(string_to_replace, assets_compile_with_app_icon_arguments)
      File.open(copy_pods_resources_path, "w") {|file| file.puts new_contents }
    end
    

    如果这个对你有用,请告诉我。


    0

    请确保plist文件中的MinimumOSVersion > 6.0


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