从 Xcode 9 构建中缺少所需的图标文件

Posted

技术标签:

【中文标题】从 Xcode 9 构建中缺少所需的图标文件【英文标题】:Missing required icon files in build from Xcode 9 【发布时间】:2017-09-28 07:03:01 【问题描述】:

使用 Xcode 9 和应用程序加载器:

但是正如你所看到的,有所有必需的图标:

这是什么情况?

这是我的 podfile:

使用_frameworks! 源'https://github.com/CocoaPods/Specs.git' 默认豆荚 吊舱“谷歌地图” 吊舱'PickerView' 吊舱'SWNavigationController' 豆荚'分支' pod 'JTAppleCalendar', :git => 'https://github.com/patchthecode/JTAppleCalendar.git', :branch => 'master' 吊舱“SVProgressHUD” 结尾 def universal_pods 吊舱“AFNetworking” 吊舱'Crashlytics' 豆荚“织物” pod 'MagicalRecord' 结尾 目标“现场服务”做 豆荚 通用豆荚 结尾 目标“FieldServiceTests”做 豆荚 通用豆荚 结尾 目标“FieldServiceTodayTimer”做 通用豆荚 结尾 目标“FieldServiceTodayCurrent”做 通用豆荚 结尾 post_install 做 |安装程序| copy_pods_resources_path = "Pods/目标支持文件/Pods-FieldService/Pods-FieldService-resources.sh" string_to_replace = '--编译 "$BUILT_PRODUCTS_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH"' assets_compile_with_app_icon_arguments = '--编译 "$BUILT_PRODUCTS_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH" --app-icon "$ASSETCATALOG_COMPILER_APPICON_NAME" --output-partial-info-plist "$BUILD_DIR/assetcatalog_generated_info.plist"' 文本 = 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 结尾 禁止所有警告!

它根本不起作用;(

编辑:

Contents.json:ASCII 文本 Icon-60.png:PNG 图像数据,60 x 60,8 位/彩色 RGBA,非隔行扫描 Icon-60@2x.png:PNG 图像数据,120 x 120,8 位/彩色 RGBA,非隔行扫描 Icon-60@3x.png:PNG 图像数据,180 x 180,8 位/彩色 RGBA,非隔行扫描 Icon-76.png:PNG 图像数据,76 x 76,8 位/彩色 RGBA,非隔行扫描 Icon-76@2x.png:PNG 图像数据,152 x 152,8 位/彩色 RGBA,非隔行扫描 Icon-Small.png:PNG 图像数据,29 x 29,8 位/彩色 RGBA,非隔行扫描 Icon-Small@2x-1.png:PNG 图像数据,58 x 58,8 位/彩色 RGBA,非隔行扫描 Icon-Small@2x.png:PNG 图像数据,58 x 58,8 位/彩色 RGBA,非隔行扫描 Icon-Small@3x.png:PNG 图像数据,87 x 87,8 位/彩色 RGBA,非隔行扫描 Icon-Spotlight-40.png:PNG 图像数据,40 x 40,8 位/彩色 RGBA,非隔行扫描 Icon-Spotlight-40@2x-1.png:PNG 图像数据,80 x 80,8 位/彩色 RGBA,非隔行扫描 Icon-Spotlight-40@2x.png:PNG 图像数据,80 x 80,8 位/彩色 RGBA,非隔行扫描 Icon-Spotlight-40@3x.png:PNG 图像数据,120 x 120,8 位/彩色 RGBA,非隔行扫描 Icon-Spotlight-41.png:PNG 图像数据,40 x 40,8 位/彩色 RGBA,非隔行扫描 Icon-Spotlight-42.png:PNG 图像数据,40 x 40,8 位/彩色 RGBA,非隔行扫描 Icon-Spotlight-43.png:PNG 图像数据,20 x 20,8 位/彩色 RGBA,非隔行扫描 Icon-iPadPro@2x.png:PNG 图像数据,167 x 167,8 位/彩色 RGBA,非隔行扫描 fieldservice.png:PNG 图像数据,1024 x 1024,8 位/彩色 RGBA,非隔行扫描

【问题讨论】:

您能否将cd 粘贴到AppIcon.appiconset 文件夹并将file * 的结果粘贴到您的问题中?也许您的某些图标意外尺寸错误(或正确尺寸和错误分配的“插槽”)。 完全在黑暗中拍摄:在“AppIcon.appiconset”中有“Icon-...”对我来说似乎有点奇怪。文件名通常以 appiconset 名称开头,例如:“AppIcon.appiconset”->“AppIcon-iPadPro@2x.png” @MertBuran 这有关系吗?它真的可以解决这个问题吗? No :) 正如我所说的那样,这是在黑暗中拍摄的,您的项目设置看起来不错,这是唯一让我觉得不寻常的事情。如果您用完了解决方案,您可以尝试重新生成您的 xcassets 作为最后的手段 【参考方案1】:

确保Copy Bundle Resources 在构建阶段位于[CP] Embed Pods Frameworks[CP] Copy Pods Resources 之下。

【讨论】:

真的吗?有关系吗? 如果您遇到此问题并使用 Cocoapods,这应该是您检查的第一件事,因为根据我的经验,这一直是原因。【参考方案2】:

我也有同样的问题。检查这个:solution

只需将以下代码添加到您的 podfile 中:

post_install do |installer|
      installer.aggregate_targets.each do |target|
        copy_pods_resources_path = "Pods/Target Support Files/#target.name/#target.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
    end

然后在控制台运行pod install

编辑:

如果它不起作用,请找到您应用的 xcarchive 文件,右键单击 >> 显示包内容,导航到产品 >> 应用程序 >> 您的应用程序的名称 >> 显示包内容。从此处找到信息 plist,并将 BuildMachineOsBuild 更改为 16A323。这基本上使计算机认为它在较旧的操作系统上。问题似乎源于 High Sierra。然后提交应用。

【讨论】:

嗨,我刚刚更新了我的问题......它似乎不起作用;( 除了更改其他 plist 条目外,我还可以通过结合使用此处找到的所有三种解决方案来解决此问题。我仍然收到有关营销图片的警告,但提交没有问题。【参考方案3】:

在尝试了上述一些消除了一些错误的建议后,就我而言,我可以通过在项目的 .xcassets 文件中重命名 AppIcon 来解决所有这些问题。该项目使用 CocoaPods,其中一些 pod 还包含带有 AppIcon 的示例项目。因此,我没有删除这些,而是​​简单地重命名了我的 AppIcon 并更改了项目设置中的引用。从那一刻起,经过数小时的反复试验,它终于得到了处理。

在使用 Xcode 查看 Pods xcassets 文件时,他们缺少营销图标和 iPad Pro 图标定义(旧库)。这些是我得到的确切错误。在存档中,这些文件现在被命名为 AppIcon,因此它们在 Info.plist 文件中被引用。

PS:要查看是否有多个 AppIcon 资产,可以使用find . -name AppIcon*

【讨论】:

我花了一整天的时间来解决这个问题,直到我读到这个答案!我尝试了所有建议,包括 pod 修复!为了解决这个问题,我在项目的 .xcassets 文件中重命名了我的“AppIcon”默认条目,并更新了“资产目录应用程序图标集名称”以与这个新值保持一致。终于可以在主屏幕上看到我漂亮的图标了。 这也是我的解决办法。我的一个 pod 中一定有一个 AppIcon。谢谢!编辑 - 这是 GoogleMapsDemos【参考方案4】: 照常归档项目 在最新版本的管理器中,从上下文菜单中选择“在查找器中显示” 在查找器中的存档文件上,从上下文菜单中选择“显示包内容” 打开终端和 CD 到这个文件夹 在终端中运行此命令:

查找产品/ -name Info.plist -print0 | xargs -0n1 plutil -replace BuildMachineOSBuild -string 16A323

然后继续进行常规上传。最后,您会看到有关缺少营销图标的警告弹出窗口,但构建将通过

【讨论】:

【参考方案5】:

我有同样的问题。 通过从 info.plist 中删除 CFBundleIcons~ipad 键修复

Check here

【讨论】:

【参考方案6】:

在我的例子中,其中一个 Pod 有 .xcassets 资源。排除此 pod 后图标错误消失。最后通过将 .xcassets 替换为 .bundle 来修复 pod。

.podspec 更改日志的一部分:

-  s.resources = '**/*.xcassets'
+  s.resources = '**/*.bundle'

【讨论】:

【参考方案7】:

正如@Daniel Kuta 所说,解决方案是:

    找到您应用的 xcarchive 文件, 显示包内容>>产品>>应用程序>>您的应用程序的名称>>显示包内容。 从此处找到信息列表,并将 BuildMachineOsBuild 更改为 16A323

但上述解决方案将删除前三个错误,但不会删除最后一个警告。

【讨论】:

【参考方案8】:

请将 AppIcon 移至默认 Assets.xcassets 而不是 Icon.xcassets。

这里还有一些提示... https://developer.apple.com/library/content/qa/qa1686/_index.html

我建议保留旧的图标名称,即使苹果说它不是强制性的。

【讨论】:

以上是关于从 Xcode 9 构建中缺少所需的图标文件的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 错误 ITMS-90022:缺少所需的图标文件。捆绑包不包含应用程序图标 120x120、167x167、152x152

上传到 App Store 时 iOS 缺少所需的图标文件

缺少所需的图标文件 120*120

由于“缺少所需的图标文件”,无法分发 Xamarin iOS iPad 存档

您能否在应用程序提交状态“无效二进制”中出现错误“无效的 Swift 支持”和“缺少所需的图标文件”提供帮助?

缺少所需的图标文件 - 正好 120x120、76X76 等...尝试了解决方案但没有成功