Fastlane 无法检测到 iOS 应用程序开发配置文件

问题描述 投票:0回答:1

我正在使用 Fastlane 脚本来设置使用 CI/CD 的自动化 ios 构建。在构建期间,Fastlane 无法检测到开发配置文件。我收到如下错误

错误:未找到“my-app-identifier”的配置文件:Xcode 找不到任何与“my-app-identifie”匹配的 iOS 应用程序开发配置文件。自动签名已禁用,无法生成配置文件。要启用自动签名,请将 -allowProvisioningUpdates 传递给 xcodebuild。 (在项目“App-scheme”的目标“My-target”中)

默认情况下,Xcode 中自动设置代码签名已启用,并尝试禁用它。并选择了证书后,我就可以使用 Fastlane 构建 ios 应用程序了。

我已经提供了 build_app 函数的配置文件详细信息。是否有任何选项可以使用 Fastlane 选择配置文件?

快速文件

default_platform(:ios)

platform :ios do
  before_all do |lane, options|
    APP_ID=ENV['APP_ID']
    APP_SCHEME=ENV['APP_SCHEME']
    setup_ci
  end

  desc "Fetches the provisioning profiles so you can build locally and deploy to your device"
  lane :certs do
    match(app_identifier: [APP_ID], type: "appstore", readonly: true, git_branch: "new-2")
    match(app_identifier: [APP_ID], type: "development", readonly: true, git_branch: "new-2")
    match(app_identifier: [APP_ID], type: "adhoc", readonly: true, git_branch: "new-2")
  end



  desc "Description of what the lane does"
  lane :beta do
    # add actions here: https://docs.fastlane.tools/actions
    

    # increment_build_number
    connect_appstore_api
    build_app(
      scheme: APP_SCHEME,
      export_method: "app-store",
      output_directory: "./build/appstore/",
      clean: true,
      archive_path: "./build/build",
      export_options: {
        provisioningProfiles: {
          APP_ID => "match AppStore #{APP_ID}",
        }
      }
    )
    # pilot
  end

  desc "Generate certificates"
  lane :generate_certs do
    connect_appstore_api
    match(
      app_identifier: [APP_ID],
      type: "development",
      readonly: false,
      git_branch: "new-2"
    )
    match(
      app_identifier: [APP_ID],
      type: "adhoc", 
      readonly: false, 
      git_branch: "new-2"
    )

    match(
      app_identifier: [APP_ID], 
      type: "appstore",
      readonly: false, 
      git_branch: "new-2"
    )
  end

  private_lane :connect_appstore_api do
    app_store_connect_api_key(
      duration: 1200, # optional (maximum 1200)
      in_house: false,
      is_key_content_base64: true
    )
  end

  lane :check_ci do
    if is_ci
      puts "I'm a computer"
    else
      puts "Hi Human!"
    end
  end

end
ios xcode cicd fastlane fastlane-match
1个回答
0
投票

我一直在与同样的问题作斗争一段时间。我在 gitactions 上使用 fastlane 和 nativescript 。我终于成功地让构建的存档阶段开始工作。

  1. 确保您跑步的车道上有

    setup_ci
    (docs)。我不知何故错过了文档的这一部分。这将整理您的钥匙串等。上面的 Fastfile 确实有
    setup_ci

  2. 确保您使用

    app_store_connect_api_key
    (docs) 进行匹配来进行身份验证,因为 2FA 在 ci/cd 中不起作用。虽然我已经设置了这个,但我实际上并没有运行该命令,并且匹配使用我的应用程序密码,然后要求输入安全代码。上面的 Fastfile 使用
    connect_appstore_api
    ,我在文档中找不到。

  3. 使用

    update_code_signing_settings
    (docs) 禁用自动代码签名。在构建之前运行此命令,例如之前
    build_app
    。尽管上面有错误提示,但我真的很难让任何东西在启用代码签名的情况下工作。调用此函数时,您还应该包含您的 profile_name,因为它会告诉 xcode 要使用什么配置文件。下面是一个例子,

    update_code_signing_settings(
        use_automatic_signing: false,
        path: "./platforms/ios/nativescript.xcodeproj",
        team_id: "YOUR-TEAM-ID",
        profile_name: "match AppStore YOUR.BUNDLE.ID",
    )
    

    记下配置文件名称。如果您运行

    fastlane match appstore
    ,您将看到用于应用商店分发的配置文件。我认为它看起来像我在示例中的内容,但只是为了确保该命令会告诉您 profile_name 参数应该是什么。

  4. 在本地测试您的构建。如果没有

    setup_ci
    但使用应用商店 API、匹配、禁用代码签名和指定配置文件,一切都应该在本地构建。如果没有,请检查错误并进行所需的更改。例如,我必须更改我的
    build.xcconfig
    以包含
    CODE_SIGN_IDENTITY
    来明确告诉 excode 使用什么身份,

    CODE_SIGN_IDENTITY = Apple Distribution: APP STORE ACCOUNT (TEAMID)
    

    您可以使用

    fastlane match appstore
    来获取此身份。它将被称为“证书名称”

我现在可以很好地构建应用程序。我的新问题是它看起来不像是自动递增版本号,因此应用程序商店拒绝该应用程序。这可能与关闭代码签名有关... brb...

© www.soinside.com 2019 - 2024. All rights reserved.