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

Mah*_*oDs 5 iphone ios jenkins fastlane

我们在 iOS 应用程序中使用 fastlane 和 jenkins 来构建它。我们已经配置了 fastlane 来构建应用程序,但问题是我们找不到使用相同配置来构建临时应用程序和应用程序商店应用程序的解决方案。

在/fastlane文件夹下,我们有gymfile和fastfile,配置如下:

健身房档案:

scheme("XXXApp")
workspace("XXXX")
output_directory("./fastlane/Builds")
export_method("ad-hoc")
include_symbols(true)
include_bitcode(false)
xcconfig("......XXXX")
sdk("iphoneos")
Run Code Online (Sandbox Code Playgroud)

Fastfile:用于测试应用程序(我们想要使用临时构建它)

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
Run Code Online (Sandbox Code Playgroud)

对于生产应用程序(我们要使用应用程序商店导出方法):

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 
Run Code Online (Sandbox Code Playgroud)

而且我们在 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 
Run Code Online (Sandbox Code Playgroud)

在 jenniks 中,我们有一个运行此步骤的步骤:

fastlane candidate_prod build_number:${BUILD_NUMBER}
Run Code Online (Sandbox Code Playgroud)

或测试而不是candidate_prod以防我们想要测试应用程序

问题是: 我们可以进行哪些更改,以便根据我们想要生成的应用程序(附加或应用程序商店)拥有具有不同导出方法的通道,以及如何为每个构建(测试和生产)指定配置文件)所以我们确保我们使用其配置文件构建应用程序?

Clo*_*ing 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",
    }
  })
Run Code Online (Sandbox Code Playgroud)

特别指定

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

不确定方法的命名是否正确 -请参阅 获取更多详细信息