【问题标题】:How to setup fastlane in iOS for different export methods and provision profiles?如何在 iOS 中为不同的导出方法和配置文件设置 fastlane?
【发布时间】:2020-10-14 14:36:03
【问题描述】:

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

在 /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")

快速文件: 用于测试应用(我们想在其中使用 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}

如果我们想要测试应用程序,或者测试而不是候选产品

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

【问题讨论】:

    标签: ios iphone jenkins fastlane


    【解决方案1】:

    有几个选项 - 我的猜测是无论如何你有超过 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",
        }
      })
    

    不确定方法的命名是否正确 - See for more details

    【讨论】:

      猜你喜欢
      • 2019-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-11
      • 2012-05-16
      • 1970-01-01
      • 2018-07-14
      • 1970-01-01
      相关资源
      最近更新 更多