You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fastlane deliver上传截图时删除原有截图失败问题求助

解决方案
  • 首先确认 App Store Connect 中对应 2.1.0 版本的状态,如果版本处于待审核/正在审核状态,平台会限制编辑权限无法删除/修改截图,需要先将版本驳回为可编辑状态后再执行任务。

方案1:新增参数跳过删除校验

你当前配置已经开启了overwrite_screenshots: true,但deliver默认会强制校验旧截图全部删除成功才会继续上传新截图,新增skip_screenshots_validation: true参数即可跳过该校验,直接强制上传新截图:

deliver(
    # 保留原有所有配置不变,新增以下参数
    skip_screenshots_validation: true,
)

方案2:手动调用接口删除旧截图

如果方案1不生效,可以在执行deliver前先调用App Store Connect接口手动清空所有旧截图,再执行上传逻辑:

lane :send_to_app_store do |options|
  # 手动删除旧截图逻辑
  app = Spaceship::ConnectAPI::App.find(options[:bundle_id] || bundle_identifier)
  target_version = app.get_edit_app_store_version(platform: Spaceship::ConnectAPI::Platform::IOS)
  target_version.get_app_store_version_localizations.each do |localization|
    localization.get_app_screenshots.each(&:delete!)
  end

  deliver(
    # 原有其他配置不变,将overwrite_screenshots改为false避免重复执行删除逻辑
    overwrite_screenshots: false,
  )
end

方案3:拆分上传流程

如果上述两个方案都没有解决问题,可以关闭deliver自带的截图上传能力,单独调用upload_screenshots action完成截图上传:

lane :send_to_app_store do |options|
  # 先执行主上传逻辑,跳过截图
  deliver(
    # 原有其他配置不变,新增跳过截图参数
    skip_screenshots: true,
  )
  # 单独执行截图上传
  upload_screenshots(
    api_key: api_key(options),
    app_identifier: options[:bundle_id] || bundle_identifier,
    screenshots_path: options[:screenshots_path] || ENV["SCREENSHOTS_PATH"] || "./screenshots",
    overwrite: true,
    languages: ["en-US"]
  )
end

内容的提问来源于stack exchange,提问作者winthorpe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 16:15:02