使用共享框架的 Fastlane 代码设计失败
Posted
技术标签:
【中文标题】使用共享框架的 Fastlane 代码设计失败【英文标题】:Fastlane Codesign Failing w/ Shared Framework 【发布时间】:2022-01-14 20:39:56 【问题描述】:我正在处理一个多目标项目,其中包含一个额外的共享框架目标,该目标本身包含一些 SPM 依赖项。每个应用目标都有自己的包标识符,框架也有自己的标识符。
我正在使用 Fastlane 为项目运行 CI,除此之外,我同时运行 match 和 gym 来提取我的代码签名配置文件并构建应用程序。
我遇到的问题是无论我做什么,唯一框架的协同设计步骤都会失败,并出现错误errSecInternalComponent
。我已将签名调整为自动,甚至为我的临时构建匹配生成开发证书,以尝试让框架的签名过程获取它们。
以上是框架标记为Embed & Sign
的情况。将其更改为Embed Without Signing
时,我收到一条错误消息,指出No signing certificate "ios Development" found
。
据我所知,框架不应该要求在开发者控制台中创建配置文件或应用标识符,但我看到的错误似乎表明它们确实如此。
有人遇到过类似情况吗?在 CI 上下文中运行时,如何让应用程序正确编译,或者至少对框架进行正确的代码签名?
提前感谢所有帮助。
【问题讨论】:
【参考方案1】:对于将来遇到类似问题的任何人,我可以通过关闭框架目标上的自动代码签名并将签名从 iOS Developer
设置为 iOS Distribution
来解决此问题。
由于我使用的是 Fastlane 和 Match,我无法使用自动代码签名。这对于应用程序目标本身来说很好,但它会导致框架目标出现问题。即使框架不需要签名,仍然需要将其设置为自动代码签名或选择代码签名配置文件。
在 CI/CD 管道中,我只是使用分发证书和 ad-hoc 配置文件为 ad-hoc 分发构建应用程序,因此 Fastlane 不会拉入开发人员配置文件以在框架上进行手动签名以查找。
一旦我更新了框架以使用 iOS Distribution
配置文件,目标就能够找到 Match 提取的临时证书和配置文件,并使用它们来满足它的要求。
【讨论】:
以上是关于使用共享框架的 Fastlane 代码设计失败的主要内容,如果未能解决你的问题,请参考以下文章
Fastlane Scan 的构建过程错过了 Jenkins CI 上的 CocoaPod 框架
即使使用 API 密钥,Fastlane 上传到 App Store 也会在非交互模式下失败
使用 fastlane 为 iOS 构建 Unity 游戏失败,缺少 USYM_UPLOAD_AUTH_TOKEN