Fastlane 从标识符中检索配置文件路径

Posted

技术标签:

【中文标题】Fastlane 从标识符中检索配置文件路径【英文标题】:Fastlane retrieve provisioning profile path from identifier 【发布时间】:2020-01-13 11:09:15 【问题描述】:

是否有任何 fastlane/CLI 工具可以根据 UDID 找到配置文件的路径和名称?


我正在尝试设置 fastlane 来进行代码签名。我正在使用match,但它不适用于我的用例,因为需要更改配置文件。

我有 2 条车道,都使用 RELEASE 配置:

submit_app_store,使用 match App Store 配置文件,将发布版本上传到测试飞行 deploy_qa_prod,带有 match AdHoc 个人资料,用于将发布版本上传到我们的 QA 平台

我正在尝试调用update_project_provisioning,但我需要为其提供配置文件的路径,并且我只有配置文件的说明符,例如match AdHoc APP_ID

我想要一个将这个说明符转换为路径的命令。


快车道代码:

lane :deploy_qa_prod do
  configuration = "Release"
  app_identifier = ...
  provisioning_profile = "match AdHoc #app_identifier"
  # In the other lane: provisioning_profile = "match AppStore #app_identifier"

  sync_code_signing(
    type: "adhoc",
    app_identifier: app_identifier,
    readonly: true
  )

  update_project_provisioning(
     xcodeproj: ...,
     target_filter: ...,
     # profile: provisioning_profile, <--- This is the problematic line
     build_configuration: configuration
  )

  build_app(
     scheme: ...,
     workspace: ...,
     configuration: configuration
     export_options: 
       method: "ad-hoc",
       provisioningProfiles: 
         app_identifier => provisioning_profile
       
     
   )

   pilot(......)
   # In the other lane: upload_to_qa(......)

【问题讨论】:

你知道@Lord Zsolt 了吗?我也有同样的需求。 这个问题有更新吗? @Lucky_girl 是的,添加了我的解决方案。 【参考方案1】:

推荐解决方案:

我不再只使用 DEBUGRELEASE 配置。

相反,我定义了 5 种不同的配置:

开发(测试版) 开发(产品) AdHoc(测试版) AdHoc(产品)* AppStore(产品)*

* 我原来的RELEASE 配置,发布此问题时。

这样,我可以为每个配置定义单独的证书和配置文件,我不再需要从 fastlane 更改它们。

如果您在Build Settings 中定义了一些用户定义的属性,请避免使用.xcconfig 文件将它们重复5 次。你可以阅读更多关于他们的信息here for example。


Hacky 解决方案,直接回答我的问题

我不建议这样做,而是使用单独的配置。但如果您需要临时快速修复,那么:

不幸的是(或幸运的是),没有非 hacky 的方法可以做到这一点。

我注意到sync_code_signing(又名match)在后台调用sigh,这将为下载的配置文件创建环境变量。

这些变量的名称遵循以下格式:sigh_#app_identifier_#match_type_profile-path(例如:sigh_com.yourDomain.yourAppName_adhoc_profile-path

然后你可以在调用update_project_provisioning时使用这个变量:

    app_identifier = ...
    match_type = "adhoc"
    configuration = "Release"

    sync_code_signing(
        type: match_type,
        app_identifier: app_identifier,
        readonly: true
    )

    profile_path = ENV["sigh_#app_identifier_#match_type_profile-path"]
 
    update_project_provisioning(
      xcodeproj: ...,
      target_filter: ...,
      profile: profile_path,
      build_configuration: configuration
    )
    
    ...

【讨论】:

以上是关于Fastlane 从标识符中检索配置文件路径的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 fastlane 将 .ipa 文件分发到 TestFlight

Fastlane:使用在配置文件中设置配置文件的 GYM

使用 fastlane 根据方案/目标自动从 plist 获取包标识符

Fastlane:无法使用“match”命令生成的 p12 文件

如何手动将现有的配置文件和证书添加到 fastlane 匹配?

匹配 - fastlane 不会自动下载更新配置文件(我在开发者帐户中添加了新设备)