我的复制框架运行脚本应该如何使用嵌套的迦太基框架



我有一个迦太基框架A依赖于我的另一个迦太基框架B。该框架B依赖于框架C。我的购物车文件没有列出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在那之后的行上。

我是否需要在运行脚本中指定每个子框架(或在我的情况下为子子框架)的路径?

我已经尝试过$(SRCROOT)/Carthage/Build/iOS/C.framework/Frameworks/B.framework/Frameworks/C.frameworks,但是它不会编译,因为它在该路径上找不到文件(尽管当我cd到该路径时它存在)。

附注:

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

我的项目和嵌套框架遇到了很多问题。我将在这里列出它们:

  • 只有将提交到 App Store 的主应用才应具有Run Script copy-frameworks阶段,并且应仅复制顶级框架。

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

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

  • 框架本身不应该是代码签名的(它应该由主应用程序签名)

最新更新