将您的嵌入式框架与其他框架相关联,并且在Build& amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp;在设备上运行。
设定:
我的设置非常简单(Swift 2.3& Xcode Xcode 8.0; Build版本8S162m):
required code signature missing
8.0和xcodebuild
问题:
一切似乎都很好,直到我构建&在设备上运行应用。该应用程序已启动,并且该过程因以下Xcode错误而中止:
TOOLCHAINS=com.apple.dt.toolchain.Swift_2_3 carthage build --platform iOS
我已经检查了 Other.framework 的签名,看起来对我来说还不错。此外,
解决方案(解决方法)
将 MyApp 与 Other.framework 相关联。可怕......这感觉很糟糕。
将完全相同的二进制文件 Other.framework 链接到 MyApp 并以这种方式解决问题,指出 Other.framework 已构建确定并且能够正确重新签名。可能与迦太基没什么关系。
注意: 有一个类似的问题iOS 8+ framework with nested embedded framework,但是,我的还有其他原因。
答案 0 :(得分:2)
这个问题与嵌套框架无关。它完全与代码签名验证有关。 dyld报告说Other.framework缺少一个代码签名。您需要签署框架。这应该由Xcode为您完成,所以我很好奇Other.framework是如何构建的。
你可以通过签名来解决这个问题。
codesign --force --deep --preserve-metadata=identifier,entitlements,resource-rules,requirements,flags,team-identifier --sign - /path/to/Other.framework
或者只是深深地辞职你的应用程序:
codesign --force --deep --preserve-metadata=identifier,entitlements,resource-rules,requirements,flags,team-identifier --sign - /path/to/My.app
答案 1 :(得分:1)
在Carthage github page上讨论这个问题,很清楚问题中提到的解决方法实际上是预期的行为:
迦太基不支持嵌套框架。
嵌套框架不允许您重用这些框架。例如,如果
A.framework
和B.framework
都依赖于Other.framework
,那么它们都不能嵌套Other.framework
- 否则您最终可能会有2个不同版本,而正确的版本可能不会在运行时选择。执行此操作的正确方法是将其列为依赖项,但将其链接到应用程序目标。
README中不清楚这一点,所以我提出了另一个问题,要求更新文档:
这在PR的范围内得到解决和结束:
#1427 README upd: link dependencies from embedded frameworks to the app target
答案 2 :(得分:1)
我按照guidance fixed修正了我的确切问题 您无需将“Other.framework”链接到MyApp。只需添加运行脚本即可签署任何需要代码签名丢失的嵌入式框架