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】:推荐解决方案:
我不再只使用 DEBUG
和 RELEASE
配置。
相反,我定义了 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 根据方案/目标自动从 plist 获取包标识符
Fastlane:无法使用“match”命令生成的 p12 文件