我有一个迦太基框架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
阶段) -
不要嵌入任何框架(除非它们是静态的,但目前还没有正式支持这些框架)。
-
框架本身不应该是代码签名的(它应该由主应用程序签名)