我有一个迦太基框架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的运行脚本,其运行格式与主应用程序相同
答案 0 :(得分:1)
我的项目和嵌套框架有很多问题。我会在这里列出它们:
仅将要提交到App Store的主应用程序应具有一个awk '{$1=(NR==1?"ID":$1"_"$2); $2=""}1' file
Run Script
阶段,并且仅应复制顶级框架。
仅测试目标应具有copy-frameworks
阶段(我的框架目标中有Copy Files
阶段)
请勿嵌入任何框架(除非它们是静态的,但是到目前为止尚未正式支持这些框架。)
框架不应该自己进行代码签名(应该由主应用程序进行代码签名)