Yev*_*nin 7 xcode xcodebuild ios ios-frameworks swift2
将嵌入式框架与其他框架链接,并且required code signature missing在设备上构建和运行时不要将其他框架与您的应用程序相关联.
建立:
我的设置非常简单(Swift 2.3和Xcode Xcode 8.0; Build版本8S162m):
xcodebuildTOOLCHAINS=com.apple.dt.toolchain.Swift_2_3 carthage build --platform iOS问题:
一切似乎工作正常,直到我在设备上构建和运行应用程序.该应用程序已启动,并且该过程因以下Xcode错误而中止:
dyld: Library not loaded: @rpath/Other.framework/Other
Referenced from: /private/var/containers/Bundle/Application/DCF0331F-FF23-43CF-AE79-B3857D5A6EE3/MyApp.app/Frameworks/My.framework/My
Reason: no suitable image found. Did find:
/private/var/containers/Bundle/Application/DCF0331F-FF23-43CF-AE79-B3857D5A6EE3/MyApp.app/Frameworks/My.framework/Frameworks/Other.framework/Other: required code signature missing for '/private/var/containers/Bundle/Application/DCF0331F-FF23-43CF-AE79-B3857D5A6EE3/MyApp.app/Frameworks/My.framework/Frameworks/Other.framework/Other'
Run Code Online (Sandbox Code Playgroud)
我检查了Other.framework的签名,看起来对我来说很好.此外,
解决方案(解决方法)
将MyApp与Other.framework链接.可怕......这感觉很糟糕.
将完全相同的二进制Other.framework链接到MyApp并以这种方式解决问题,指出,Other.framework构建正常并且能够正确地重新签名.可能与迦太基没什么关系.
注意:iOS 8+框架与嵌套嵌入式框架 存在类似问题,但是,我的还有其他原因.
在Carthage github 页面上讨论这个问题,很明显问题中提到的解决方法实际上是预期的行为:
\n\n\n\n\nCarthage 不支持嵌套框架。
\n\n嵌套框架不允许您重用这些框架。例如,如果
\n\nA.framework和B.framework都依赖于Other.framework,那么它们都不能嵌套Other.framework\xe2\x80\x94 否则你可能最终会得到 2 个不同的版本,并且在运行时可能无法选择正确的版本。正确的方法是将其列为依赖项,但将其链接到应用程序目标。
\n
完整讨论:在设备上构建和运行时仅将嵌入式框架与其他动态框架链接失败:“缺少所需的代码签名”
\n\nREADME 中并不清楚这一点,因此我提出了另一个问题,要求更新文档:
\n\n更新自述文件:将动态框架链接到嵌入式框架还需要将它们链接到应用程序目标 #1427
\n\n此问题已在 PR 范围内解决并关闭:
\n\n#1427 自述文件更新:将嵌入式框架的依赖项链接到应用程序目标
\n| 归档时间: |
|
| 查看次数: |
2204 次 |
| 最近记录: |