我的 copy-frameworks 运行 脚本应该如何看待嵌套的 Carthage 框架?

How should my copy-frameworks Run Script look with nested Carthage frameworks?

我有一个 Carthage 框架 A,它依赖于我的另一个 Carthage 框架 B。该框架 B 依赖于框架 C。我的 Cartfile 没有列出 C,但正如文档所述,它是在 carthage update 上下载的。在我的 运行 脚本中我有:

$(SRCROOT)/Carthage/Build/iOS/A.framework
$(SRCROOT)/Carthage/Build/iOS/B.framework
$(SRCROOT)/Carthage/Build/iOS/C.framework

并且:

$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/A.framework
$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/B.framework
$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/C.framework

这对我来说很好,但是当我提交到 App Store 时,我得到 Code signing "A.framework" failed

在日志中我看到 Running /usr/bin/codesign

/var/folders/1y/hdyf678f66897f_fafjdkdk89f8d/T/XcodeDistPipeline.7bM/Root/Payload/MyApp.app/Frameworks/A.framework/Frameworks/B.framework/Frameworks/C.framework

在同一个字符串之后的下一行,路径为 C.framework replacing existing signature,然后是 code object is not signed at all

我是否需要在我的 运行 脚本中指定每个子框架(或者在我的例子中是 sub 子框架)的路径?

我试过 $(SRCROOT)/Carthage/Build/iOS/C.framework/Frameworks/B.framework/Frameworks/C.frameworks,但它无法编译,因为它在那个路径找不到文件(尽管当我 cd 到那个路径时它存在)。

PS:

B.framework 也有 C.framework 的 运行 脚本,其格式与主应用程序相同

我的项目和嵌套框架有很多问题。我会在这里列出它们:

  • 只有提交到 App Store 的主应用程序应该有一个 Run Script copy-frameworks 阶段,它应该只复制顶级框架。

  • 只有测试目标应该有一个 Copy Files 阶段(我的框架目标中有一个 Copy Files 阶段)

  • 不要嵌入任何框架(除非它们是静态的,但目前尚未正式支持这些框架)。

  • 框架本身不应进行代码签名(应由主应用程序进行代码签名)