在从Xcode 9构建中缺少必需的图标文件。

19
使用Xcode 9和Application Loader:

enter image description here

但是正如你所看到的,所有必需的图标都在这里。

enter image description here

这是什么情况?
这是我的Podfile: use_frameworks! source 'https://github.com/CocoaPods/Specs.git'
def pods pod 'GoogleMaps' pod 'PickerView' pod 'SWNavigationController' pod 'Branch' pod 'JTAppleCalendar', :git => 'https://github.com/patchthecode/JTAppleCalendar.git', :branch => 'master' pod 'SVProgressHUD' end
def universal_pods
pod 'AFNetworking' pod 'Crashlytics' pod 'Fabric' pod 'MagicalRecord' end
target 'FieldService' do pods universal_pods end
target 'FieldServiceTests' do pods universal_pods end
target 'FieldServiceTodayTimer' do universal_pods end
target 'FieldServiceTodayCurrent' do universal_pods end post_install do |installer| copy_pods_resources_path = "Pods/Target Support Files/Pods-FieldService/Pods-FieldService-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
inhibit_all_warnings!

而且它根本不起作用。

编辑

enter image description here enter image description here

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 * 命令的结果粘贴到你的问题中?也许你的某些图标尺寸被误设置了(或者是正确尺寸但错误分配了“插槽”)。 - d.felber
完全是瞎猜:在“AppIcon.appiconset”中使用“Icon-…”对我来说有点奇怪。文件名通常以appiconset名称开头,例如:“AppIcon.appiconset”->“AppIcon-iPadPro@2x.png”。 - Mert Buran
@MertBuran 这重要吗?这真的是那个问题的解决方案吗? - Bartłomiej Semańczyk
不 :) 正如我所说,那只是一次瞎猜,您的项目设置看起来很好,那是我觉得不寻常的唯一一件事。如果您没有更多解决方案,可以尝试重新生成您的 xcassets 作为最后的手段。 - Mert Buran
8个回答

6
请确保在 Build Phases 中,Copy Bundle Resources 位于 [CP] Embed Pods Frameworks[CP] Copy Pods Resources 下方。
请参考以下截图:enter image description here

真的吗?这有关系吗? - Bartłomiej Semańczyk
如果你遇到了这个问题并且正在使用Cocoapods,那么这应该是你首先要检查的东西,因为在我的经验中它总是导致问题的根源。 - cayleyh

5
我遇到了同样的问题。请查看这个链接:解决方案 只需将以下代码添加到您的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文件,右键单击 >> 显示包内容,导航至 products >> applications >> 您的应用程序名称 >> 显示包内容。从这里找到 info plist,并将 BuildMachineOsBuild 更改为 16A323。这基本上是欺骗计算机认为它在旧操作系统上运行.. 问题似乎源于 High Sierra。然后提交应用程序。


嗨,我刚刚更新了我的问题...它似乎不起作用;( - Bartłomiej Semańczyk
我能够通过使用这里找到的三种解决方案的组合以及更改其他plist条目来解决这个问题。虽然我仍然收到有关营销图片的警告,但它可以顺利提交。 - Mike Welsh

4

尝试了上述建议后,我成功地通过在项目的.xcassets文件中重命名AppIcon来解决所有问题。该项目使用CocoaPods,其中一些pod包含具有AppIcon的示例项目。因此,我只需重命名我的AppIcon并更改项目设置中的引用即可,而不是删除它们。从那时起,在经历了数小时的试错后,它终于成功处理。

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

PS:要查找是否有多个AppIcon资源,请使用find . -name AppIcon*


我花了整整一天的时间来解决这个问题,直到我看到了这个答案!我尝试了所有的建议,包括 pod 修复!为了解决这个问题,我在项目的 .xcassets 文件中重命名了我的 'AppIcon' 默认条目,并更新了 'Asset Catalog App Icon Set Name' 以与这个新值对齐。最终,我可以在主屏幕上看到我的漂亮图标了。 - ack
这也是我的修复方法。我的其中一个pod里可能有一个AppIcon。谢谢!编辑 - 它是GoogleMapsDemos。 - Michael Gaines

2
  • 像往常一样将项目归档
  • 在组织器中的最新构建中,从上下文菜单中选择“在查找器中显示”
  • 在查找器中的存档文件上,从上下文菜单中选择“显示包内容”
  • 打开终端并进入此文件夹
  • 在终端中运行以下命令:

find Products/ -name Info.plist -print0 | xargs -0n1 plutil -replace BuildMachineOSBuild -string 16A323

然后按照常规上传流程进行。最后,您将看到一个有关缺少营销图标的警告弹出窗口,但是构建将继续进行。


2

我曾经遇到过同样的问题。

通过从info.plist文件中删除CFBundleIcons~ipad键来解决该问题。

在这里查看


1
在我的情况下,其中一个Pod拥有带有资源的.xcassets。在排除此Pod后,图标错误消失了。最终,通过将.xcassets替换为.bundle来修复了该Pod。
.podspec变更日志的一部分:
-  s.resources = '**/*.xcassets'
+  s.resources = '**/*.bundle'

0

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

  1. 找到您的应用程序的xcarchive文件,
  2. 显示包内容 >> 产品 >> 应用程序 >> 您的应用程序名称 >> 显示包内容。
  3. 从这里找到info plist,并将BuildMachineOsBuild更改为16A323

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


0

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