我的复制框架运行脚本在嵌套的迦太基框架中应该如何显示?

时间:2019-01-20 17:02:26

标签: ios frameworks app-store codesign carthage

我有一个迦太基框架A,该框架依赖于我的另一个迦太基框架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的路径。

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

我已经尝试过$(SRCROOT)/Carthage/Build/iOS/C.framework/Frameworks/B.framework/Frameworks/C.frameworks,但是由于它无法在该路径中找到文件,因此它无法编译(尽管当我cd到该路径时,它仍然存在)。

PS:

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

1 个答案:

答案 0 :(得分:1)

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

  • 仅将要提交到App Store的主应用程序应具有一个awk '{$1=(NR==1?"ID":$1"_"$2); $2=""}1' file Run Script阶段,并且仅应复制顶级框架。

  • 仅测试目标应具有copy-frameworks阶段(我的框架目标中有Copy Files阶段)

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

  • 框架不应该自己进行代码签名(应该由主应用程序进行代码签名)