如何在iOS中为不同的导出方法和配置文件设置fastlane?

5
我们正在使用 fastlane 和 jenkins 来构建 iOS 应用程序。 我们已经配置了 fastlane 来构建应用程序,但问题是我们找不到一个解决方案来使用相同的配置来构建 ad-hoc 和 app-store 应用程序。
在 /fastlane 文件夹下,我们有 gymfile 和 fastfile 这两个文件,并具有以下配置:
Gymfile:
scheme("XXXApp")
workspace("XXXX")
output_directory("./fastlane/Builds")
export_method("ad-hoc")
include_symbols(true)
include_bitcode(false)
xcconfig("......XXXX")
sdk("iphoneos")

Fastfile:用于测试应用程序(我们希望使用ad-hoc进行构建)

lane :test do |options|
        get_info_plist_value(path: ENV["INFO_PLIST_PATH"], key: "CFBundleVersion")
        increment_build_number(
            build_number: options[:build_number],
            xcodeproj: "./XXXXX"
        )
        build_test
    end

针对生产应用(我们希望使用应用商店导出方法):

lane :candidate_prod do |options|
        get_info_plist_value(path: ENV["INFO_PLIST_PATH"], key: "CFBundleVersion")
        increment_build_number(
            build_number: options[:build_number],
            xcodeproj: "./XXXXXX"
        )

        update_project_provisioning(
        xcodeproj: "./XXXXXX",
        profile: "./fastlane/productionprovisionprofile", 
        target_filter: "productionappname", 
        build_configuration: "Release",
        code_signing_identity: "XXXX" 
        )

        build_prod 

同时我们还有一个在fastfile中的私有通道(这是针对生产环境的,但我们也为测试应用程序准备了另一个通道):

private_lane :build_prod do 
        build_ios_app(
            workspace: "XXXXXX",
            #configuration: configuration,  
            scheme: "productionappname",
            silent: false,
            codesigning_identity: "XXXXX",
            include_bitcode: false,
        )
        puts "$IPA_OUTPUT_PATH::\"#{lane_context[SharedValues::IPA_OUTPUT_PATH]}\""
    end 

在Jenniks中,我们有一步骤需要运行以下内容:
fastlane candidate_prod build_number:${BUILD_NUMBER}

如果我们想要测试应用程序,可以使用候选_prod进行测试

问题是:我们可以做哪些更改,以便根据我们希望生成的应用程序(add-hoc或app-store)具有不同导出方法的车道,并且如何为每个构建(测试和prod)指定预配配置文件,以确保我们使用其预配配置文件构建应用程序?

1个回答

3

有几种选择 - 我猜无论如何您都有超过1个捆绑标识符用于不同的应用程序...

  1. 您可以设置一个新目标,并只为该目标创建具有不同方案的相同车道(或构建一个函数并将正确的方案作为参数发送)。您还必须创建不同的捆绑ID。
  2. 如果您不希望创建不同的目标,并且您正在使用项目上的自动签名,则必须将其更改为手动,并在那里指定预配配置文件。确保具有不同的构建号/版本,否则可能会发生冲突

类似这样

生产

    build_app(
  workspace: "XXXX.xcworkspace",
  scheme: "XXXXX",
  ......
  export_options: {
    method: "app-store",
    signingStyle: 'manual',
    provisioningProfiles: {
      "bundle id": "Prod profile full name",
    }
  })

即兴的

    build_app(
  workspace: "XXXX.xcworkspace",
  scheme: "XXXXX",
  ......
  export_options: {
    method: "ad-hoc",
    signingStyle: 'manual',
    provisioningProfiles: {
      "bundle id": "Ad-hoc full name",
    }
  })

不确定方法的命名是否正确 - 更多细节请参考


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接