Ios 在fastlane中运行健身房脚本时,如何获取用户选择的方案?

Ios 在fastlane中运行健身房脚本时,如何获取用户选择的方案?,ios,fastlane,Ios,Fastlane,我已将fastlane添加到iOS项目中,以创建.ipa 使用以下脚本,我可以创建ipa desc "Generate .ipa" lane :createipa do gym(clean: true, export_method: ENV["EXPORT_METHOD"], output_directory: ENV["DIRECTORY"]) end gym还有两个其他属性,一个是与不同方案相关的方案,另一个是要从中创建ipa的方案,另一个是作为ipa名称的output

我已将fastlane添加到iOS项目中,以创建.ipa

使用以下脚本,我可以创建ipa

  desc "Generate .ipa"
  lane :createipa do
    gym(clean: true, export_method: ENV["EXPORT_METHOD"], output_directory: ENV["DIRECTORY"])
  end
gym还有两个其他属性,一个是与不同方案相关的方案,另一个是要从中创建ipa的方案,另一个是作为ipa名称的output_name。
现在,当我在没有scheme的情况下使用这个脚本时,它在运行时要求我选择scheme,我想在运行时将用户输入scheme保存到一个变量,并将其设置为output_name,有什么方法可以做到这一点吗?

既然您正在寻找用户输入,为什么不在运行fastlane时将scheme name传递给脚本呢?像这样:

bundle exec fastlane createipa方案:MySchemeName

并将您的Fastfile修改为:

或者,您可以将其另存为环境条目:

XCODE_SCHEME=MySchemeName bundle exec fastlane

要直接回答问题,请使用以下代码

desc“根据用户选择的方案生成ipa” lane:createipa-do 全局模式='MyApp/MyApp.xcodeproj/***.xcscheme' schemes=Dir[glob_pattern].map do | scheme_文件路径| File.basenamescheme\u文件路径 终止 prompt\u text='选择一个方案:\n' 每个|索引都有|索引|
就我个人而言,我更愿意以相同的方式传递所有这些参数。无论是作为车道的选项,还是作为环境条目。好吧,问题是我不知道方案名称,所以我不能将其添加到fastlane createipa之后。当我运行fastlane createipa时,因为我没有选择方案,所以它会显示方案列表并让我选择一个,这就是我想说的用户输入并将其作为输出_name*的地方,我很困惑。通过打开Xcode并查看方案,或者导航到项目包MyProject.xcodeproj/xcsharedata/xcschemes/SchemeName.xcscheme,或者(而不是xcshareddata)xcuserdata,您可以轻松查看方案。您能详细说明一下为什么在运行命令时不知道方案是什么吗?如果我了解问题所在,我可以帮你。当然,那是因为我所有的项目只有一个文件,它有不同的方案和不同的名称,我想有一个通用的快速文件,并将其添加到我所有的项目中。清楚吗?我可以解释得更多。谢谢你的时间和帮助。这有点帮助。因此,您希望为每个项目自动创建ipa。要用于创建ipa的方案名称对于每个项目都是不同的。对
  desc "Generate .ipa"
    lane :createipa do |options|
      gym(
        clean: true,
        export_method: ENV["EXPORT_METHOD"],
        output_directory: ENV["DIRECTORY"],
        scheme: options[:scheme]
      )
    end