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
相关产品推荐
相关产品推荐

