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

使用Fastlane的upload_to_app_store上传时同步至TestFlight的问题

问题与解决方案

问题描述

使用Fastlane的upload_to_app_store()将应用上传至App Store Connect时,对应的构建版本会自动同步到TestFlight,导致TestFlight的默认测试版本被替换为上传至App Store的生产环境版本。

当前工作流:

  • 推送代码至sandbox分支时,通过upload_to_testflight()仅上传构建到TestFlight,此流程运行正常;
  • 将sandbox分支的最新变更合并推送至production分支、执行上线流程时,上传App Store的同时,构建版本会同步到TestFlight,导致TestFlight的测试版本关联了生产服务器环境。

对应分支的Fastlane Lane配置

sandbox分支执行的Lane:

desc "Push a new beta build to TestFlight"
lane :deploy_testflight do
  set_full_version()

  setup_ci if is_ci

  cocoapods(clean_install: is_ci)

  match(
    type: "appstore",
    readonly: is_ci,
  )

  build_app(
    workspace: "Runner.xcworkspace",
    scheme: "Runner",
    archive_path: "../build/ios/Runner.xcarchive",
    output_directory: "../build/ios/Runner",
  )

  upload_to_testflight(
    api_key_path: "./app_store_connect.json",
    ipa: '../build/ios/Runner/Runner.ipa',
    skip_waiting_for_build_processing: true,
  )
end

production分支执行的Lane:

desc "Push a new release build to App Store"
lane :deploy_appstore do
  set_full_version()

  setup_ci if is_ci

  cocoapods(clean_install: is_ci)

  match(
    type: "appstore",
    readonly: is_ci,
  )

  build_app(
    workspace: "Runner.xcworkspace",
    scheme: "Runner",
    archive_path: "../build/ios/Runner.xcarchive",
    output_directory: "../build/ios/Runner",
  )

  upload_to_app_store(
    force: true,
    reject_if_possible: true,
    skip_metadata: false,
    skip_screenshots: true,
    languages: ['en-US'],
    release_notes: {
      "default" => "Updates",
      "en-US" => "Updates",
    },
    submit_for_review: true,
    automatic_release: true,
    precheck_include_in_app_purchases: false,
    submission_information: {
      add_id_info_limits_tracking: true,
      add_id_info_serves_ads: false,
      add_id_info_tracks_action: true,
      add_id_info_tracks_install: true,
      add_id_info_uses_idfa: true,
      content_rights_has_rights: true,
      content_rights_contains_third_party_content: true,
      export_compliance_platform: 'ios',
      export_compliance_compliance_required: false,
      export_compliance_encryption_updated: false,
      export_compliance_app_type: '',
      export_compliance_uses_encryption: false,
      export_compliance_is_exempt: false,
      export_compliance_contains_third_party_cryptography: false,
      export_compliance_contains_proprietary_cryptography: false,
      export_compliance_available_on_french_store: false
    },
    api_key_path: "./app_store_connect.json",
    ipa: '../build/ios/Runner/Runner.ipa',
  )
end

原因分析

这是App Store Connect的默认平台行为:所有上传至App Store的构建版本,都会自动同步到TestFlight的构建库中。Fastlane的upload_to_app_store()本质是调用App Store Connect的官方API,因此会遵循这一规则,导致生产构建同步到TestFlight并成为默认版本。

解决方案

方案1:修改Fastlane配置,跳过TestFlight同步

在upload_to_app_store的参数中添加skip_testflight: true,该参数会让Fastlane在上传App Store时,跳过将构建同步到TestFlight的步骤。修改后的upload_to_app_store配置如下:

upload_to_app_store(
  force: true,
  reject_if_possible: true,
  skip_metadata: false,
  skip_screenshots: true,
  languages: ['en-US'],
  release_notes: {
    "default" => "Updates",
    "en-US" => "Updates",
  },
  submit_for_review: true,
  automatic_release: true,
  precheck_include_in_app_purchases: false,
  submission_information: {
    add_id_info_limits_tracking: true,
    add_id_info_serves_ads: false,
    add_id_info_tracks_action: true,
    add_id_info_tracks_install: true,
    add_id_info_uses_idfa: true,
    content_rights_has_rights: true,
    content_rights_contains_third_party_content: true,
    export_compliance_platform: 'ios',
    export_compliance_compliance_required: false,
    export_compliance_encryption_updated: false,
    export_compliance_app_type: '',
    export_compliance_uses_encryption: false,
    export_compliance_is_exempt: false,
    export_compliance_contains_third_party_cryptography: false,
    export_compliance_contains_proprietary_cryptography: false,
    export_compliance_available_on_french_store: false
  },
  api_key_path: "./app_store_connect.json",
  ipa: '../build/ios/Runner/Runner.ipa',
  skip_testflight: true # 添加此参数
)

方案2:手动设置TestFlight默认版本

如果不想修改Fastlane配置,可以在生产构建上传完成后,登录App Store Connect,进入TestFlight页面,找到之前的sandbox分支构建版本,手动将其设置为默认测试版本,覆盖自动同步的生产构建。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 17:13:13