ios – 在设备上构建和运行时,仅将嵌入式框架与其他动态框架链接失败

前端之家收集整理的这篇文章主要介绍了ios – 在设备上构建和运行时,仅将嵌入式框架与其他动态框架链接失败前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
TL;博士

将您的嵌入式框架与其他框架链接,并且不将其他框架与您的应用程序链接,导致Build& amp;在设备上运行.

描述:

建立:

我的设置非常简单(Swift 2.3& Xcode Xcode 8.0; Build版本8S162m):

>使用Carthage(0.17.2)我用xcodebuild 8.0和TOOLCHAINS = com.apple.dt.toolchain.Swift_2_3 carthage build构建了Other.framework – 平台iOS
> MyApp嵌入了My.framework.
>应用程序和框架项目位于一个Xcode工作区下.
>我只是将Other.framework链接到My.framework(这意味着,MyApp根本没有链接到Other.framework).这里的要点是,MyApp不需要使用Other.framework API.

问题:

一切似乎都很好,直到我构建&在设备上运行该应用程序.应用程序已启动,并且该过程因以下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'

我检查了Other.framework的签名,看起来对我来说很好.此外,

解决方案(解决方法)

将MyApp与Other.framework链接.可怕……这感觉很糟糕.

将完全相同的二进制Other.framework链接到MyApp并以这种方式解决问题,指出,Other.framework构建正常并且能够正确地重新签名.可能与迦太基没什么关系.

注意:
有一个类似的问题iOS 8+ framework with nested embedded framework,然而,我的还有其他原因.

解决方法

这个问题与嵌套框架无关.它完全是关于代码签名验证. 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,team-identifier --sign - /path/to/My.app
原文链接:https://www.f2er.com/iOS/331978.html

猜你在找的iOS相关文章