从 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
由于“缺少所需的图标文件”,无法分发 Xamarin iOS iPad 存档