带有共享框架的 Fastlane 代码设计失败

Fastlane Codesign Failing w/ Shared Framework

我正在处理一个多目标项目,该项目有一个额外的共享框架目标,该目标本身包含一些 SPM 依赖项。每个应用目标都有自己的包标识符,框架也有自己的标识符。

我正在使用 Fastlane 来 运行 CI 项目,除此之外,我正在 运行 同时使用 match 和 gym 来引入我的代码签名配置文件并构建申请。

我遇到的问题是,无论我做什么,唯一框架的协同设计步骤都会失败并显示错误 errSecInternalComponent。我已将签名调整为自动,甚至为我的临时构建匹配生成开发证书,试图让框架的签名过程选择它们。

以上是框架标记为Embed & Sign时的情况。将其更改为 Embed Without Signing 时,我收到一条错误消息,指示 No signing certificate "iOS Development" found.

据我所知,框架不应该要求在开发者控制台中创建配置文件或应用程序标识符,但我看到的错误似乎表明它们确实如此。

有人遇到过类似的情况吗?当 运行 在 CI 上下文中,或者至少对框架进行正确的代码签名时,我该如何让应用程序正确编译?

在此先感谢您的帮助。

对于以后遇到类似问题的任何人,我可以通过关闭框架目标上的自动代码签名并将签名从 iOS Developer 设置为 iOS Distribution 来解决此问题。

由于我使用的是 Fastlane 和 Match,因此无法使用自动代码签名。这对应用程序目标本身来说很好,但它会导致框架目标出现问题。即使框架不需要签名,仍然需要将其设置为自动代码签名或选择代码签名配置文件。

在 CI/CD 管道中,我只使用分发证书和临时配置文件构建临时分发应用程序,因此 Fastlane 不会引入开发人员配置文件以在要查找的框架。

一旦我更新了框架以使用 iOS Distribution 配置文件,目标就能够找到 Match 引入的临时证书和配置文件,并使用它们来满足它的要求。