fastlane Xcode9 The call to the iTMSTransporter completed with a non-zero exit status: 1. This indicates a failure.

问题

升级 Xcode9 以后,原有的 fastlane 打包和分发脚本不能正常使用。

1、gym export_options 变化

Xcode9 中的 Export 操作需要指定更多的信息,对应的 fastlane 中的 gym action 也同样需要把更多的信息指明,原有最简单的脚本,可能已不能正常工作:

// 在 Xcode9 中可能不能正常工作
gym(scheme: "MyApp", workspace: "MyApp.xcworkspace")

你需要更多的配置信息:

// 指定 export plist 文件路径
gym({
    workspace: "MyApp.xcworkspace"
    scheme: "MyApp",
    configuration: 'Release',
    export_xcargs: "-allowProvisioningUpdates",
    export_options: './exportOptions_appStore.plist'
    })

// 或者直接将相关信息追加到参数里面
gym({
      scheme: "appScheme"
      configuration: "Debug",
      export_method: "development",
      export_xcargs: "-allowProvisioningUpdates",
      export_options: {
                provisioningProfiles: {
                    "com.example.appId" => "app_dev",
                    "com.example.appId.NotificationServiceExtension" => "app_notification_dev"
                }
            }
    })
  1. 上传 iTunes 失败
    需要更新 fastlane 版本到 2.56.0 以上,在之后的版本适配了 Xcode9 的上传问题。

3、fastlane 版本无法更新
如果你使用了 plugin,在运行 bundle install 后发现 fastlane 版本又回退到了某个版本,此时你需要执行:

bundle update fastlane

在执行上面命令时,我遇到一个 git 读写权限的问题,直接加上管理员权限即可:

sudo bundle update fastlane

之后你会发现你的 Gemfile.lock 文件也有更新,需要将这个文件提交进你的代码仓库。

说明:
如果你使用了 plugin ,在你的的 Gemfile 中没有指定使用的 fastlane(以及其它插件) 版本,bundler 会默认使用你上一次使用的版本,这个版本信息记录在 Gemfile.lock 文件中。
你在执行 bundle install 会直接使用 Gemfile.lock 文件中的版本。
如果你执行 bundle update 操作,则此时会更新相应 ruby 应用到最新或者指定版本,相应的 Gemfile.lock 文件也会更新,此时将 Gemfile.lock 文件提交进你的代码仓库,就保存了最近能正常使用的 ruby 应用版本信息。
想了解更多,这篇Bundler 的作用及原理文章介绍的很详细。

参考

官方issure10004

你可能感兴趣的:(fastlane Xcode9 The call to the iTMSTransporter completed with a non-zero exit status: 1. This indicates a failure.)