无法将构建上传到iTuneConnect

问题描述

@H_502_0@我一直在尝试上传已经存在于AppStore多年的应用程序版本,每次,我都会收到以下错误消息。

@H_502_0@ [传输器错误输出]:错误ITMS-90704:“缺少应用程序图标。为iOS,iPadOS或watchOS构建的应用程序的资产目录中必须包含PNG格式的1024 x 1024像素的应用程序图标。图标,则无法将应用提交审核。有关详细信息,请参见https://developer.apple.com/ios/human-interface-guidelines/icons-and-images/app-icon/."

@H_502_0@该信息很清楚,但是我认为这是错误的,因为我已经拥有了3年以上的最新资产目录,而且以前从未遇到过问题。为了解决项目/目录方面的一些怪异问题,我也将其完全替换为新的。

@H_502_0@提到的图标是RGB,即非Alpha PNG。

@H_502_0@除了迁移到xCode 12之外,最近对该项目所做的唯一重大更改是对Catalyst的支持。我认为这可能与此有关,但是我对如何完全不了解。

@H_502_0@我还检查了ipa上的Assets.car,尽管没有找到它本身的图标,但我还是找到了一些图像,这些图像是图标组的大小不同的图片...不确定如何思考:)

解决方法

所以...这是我对这个问题的“解决方案”。我宁愿不必绕过它......但现在我已经失去了在我的项目中找到这种行为的原因的所有希望:p

由于传递错误仅发生在 iOS ipa 上,并且不需要设置催化剂配置...我正在 podfile 上执行以下操作以禁用它们。它最终是一种非常干净的方法,因为该项目已经有一些库没有在 ios 和催化剂上使用......因此在更改平台时已经需要更新 pod。

$compileForIOS = false

post_install do |installer|
  
  # main project
  project_name = Dir.glob("*.xcodeproj").first
  project = Xcodeproj::Project.open(project_name)
  
  project.targets.each do |target|
    
    # disable catalyst support when compiling for iOS
    # iOS delivery to TestFlight won't work if enabled :/
    if target.name == "TargetName" || target.name == "TargetNameExtension"
      target.build_configurations.each do |config|
        
        config.build_settings['SUPPORTS_MACCATALYST'] = $compileForIOS ? 'NO' : 'YES'
        config.build_settings['TARGETED_DEVICE_FAMILY'] = $compileForIOS ? '1,2' : '1,2,6'
        
        if $compileForIOS
          config.build_settings.delete('IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]')
        else
          config.build_settings['IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]'] = '14.2'
        end
      end
    end
  end
  
  project.save

end