Ios dyld:未为框架中的框架加载库
我试图嵌入一个使用另一个框架的框架,该框架在模拟器中运行良好,但在iOS设备上崩溃: dyld:未加载库:@rpath/FrameworkB.framework/FrameworkB 引用自:/private/var/mobile/Containers/Bundle/Application/B072CD7C-8595-4AE4-A506-26832A0F4402/FrameworkTest.app/Frameworks/FrameworkA.FrameworkA/FrameworkA 原因:找不到图像 这是我在Xcode中的结构:Ios dyld:未为框架中的框架加载库,ios,objective-c,xcode,ios8,Ios,Objective C,Xcode,Ios8,我试图嵌入一个使用另一个框架的框架,该框架在模拟器中运行良好,但在iOS设备上崩溃: dyld:未加载库:@rpath/FrameworkB.framework/FrameworkB 引用自:/private/var/mobile/Containers/Bundle/Application/B072CD7C-8595-4AE4-A506-26832A0F4402/FrameworkTest.app/Frameworks/FrameworkA.FrameworkA/FrameworkA 原因:找不
- FrameworkTest.xcodeproj(应用程序项目)
- FrameworkA.xcodeproj(Cocoa-Touch框架)
- FrameworkB.xcodeproj(Cocoa Touch框架)
- FrameworkA.xcodeproj(Cocoa-Touch框架)
a
。类A
使用FrameworkB(在FrameworkA中链接)中的类B
这在模拟器中运行良好,但在设备上不起作用
结构可能看起来有点奇怪,但我在开发应用程序时正在开发框架,这就是为什么我想在我的应用程序项目中添加框架项目
如果你需要仔细看的话,我已经上传给你看了。(类A
在AppDelegate.m文件中被调用)
为什么它在iOS模拟器中工作而在设备上不工作?我如何让它在设备上工作
编辑:
正如simonthumper在评论中所建议的,我还尝试将FrameworkB.framework
添加到Copy Files
作为FrameworkA构建阶段的框架目标,但这在控制台中给了我以下错误:
dyld:未加载库:@rpath/FrameworkB.framework/FrameworkB
引用自:/private/var/mobile/Containers/Bundle/Application/2A38A2BC-9CD7-4AF6-9E50-42C16D92D6B2/FrameworkTest.app/Frameworks/FrameworkA.FrameworkA/FrameworkA
原因:未找到合适的图像。确实发现:
/private/var/mobile/Containers/Bundle/Application/2A38A2BC-9CD7-4AF6-9E50-42C16D92D6B2/FrameworkTest.app/framework/FrameworkA.framework/FrameworkB.FrameworkB/FrameworkB:mmap()错误1,地址=0x10012C000,大小=0x00008000段=_textin segment::map()映射/private/var/mobile/Containers/Bundle/Application/2A38A2BC-9CD7-4AF6-9E50-42C16D92D6B2/FrameworkTest.app/Frameworks/FrameworkA.framework/FrameworkB.framework/FrameworkB.framework/FrameworkB
我在嵌入式框架方面也有类似的问题,我刚刚从GitHub试用了您的代码 选项1(不适合团队合作) 错误消失的原因是将FrameworkB添加到FrameworkTest目标的General选项卡中的嵌入式二进制文件中 选项2 嗯,与其他开发人员共享项目当然很重要:)。你试过这种方法吗?在FramewrokA的构建阶段添加新的复制文件阶段,并将FrameworkB添加到Frameworks目标中。 但我不知道为什么它能在模拟器上工作。如果有人知道,请随时发表评论
干杯我就这个问题联系了苹果公司,并找到了解决问题的办法。苹果的技术支持明确表示,我需要将FrameworkB.xcodeproj添加到我的应用程序项目中,因此我的项目结构是:
- FrameworkTest.xcodeproj(应用程序项目)
- FrameworkA.xcodeproj(Cocoa-Touch框架)
- FrameworkB.xcodeproj(Cocoa Touch框架)
- FrameworkB.xcodeproj(Cocoa Touch框架)
- FrameworkA.xcodeproj(Cocoa-Touch框架)
吊销您的企业分发证书并创建一个新证书以解决此问题。一旦我这样做了,它就工作得很好。你在复制文件构建阶段得到了框架吗?@simonthumper如果我这样做,我已经用更多信息编辑了这个问题:-)嗨。我也面临着同样的问题。但是我没有第二个框架项目代码(只有FrameworkB.framework)。知道我该怎么做吗?谢谢,但我也尝试过将FrameworkB添加到嵌入式二进制文件中,而且效果不错。但是它直接链接到
DerivedData
目录,这不是我想要的。这只在你的Mac电脑上有效。我正在与其他开发人员共享该项目,因此这需要在没有任何特定路径的情况下工作。:-)@ThomasClemensen我刚刚读了你的编辑,所以我的第二个解决方案对你也不好……但它确实对我有效(使用你的项目)@micromanc3r我尝试了你的第二个选项2,但这给了我错误。dyld:未加载库:@rpath/FrameworkB.framework/FrameworkB引用自:……FrameworkTest.app/FrameworkA.FrameworkA.FrameworkA/FrameworkA原因:未找到合适的映像。确实发现:……FrameworkTest.app/Frameworks/FrameworkA.framework/framework/FrameworkB.framework/FrameworkB’选项2与其他关于此类问题的答案中的“嵌入swift标准库”选项相比是非常棒的。我也面临着同样的问题。但是我没有第二个框架项目代码(只有FrameworkB.framework)。知道我该怎么做吗?+1但这不应该是一个解决方案-如果是的话,我们如何构建单文件SDK:-(到目前为止的情况有任何更新吗?解决了我的问题,谢谢。不管怎样,我们没有两次添加frameworkB吗?我会与没有添加它的解决方案(据称)进行比较两次,但我没有……或者Xcode足够智能,可以只添加一次吗?我想相信,因为它们是框架(动态共享库,对吧?),第一次将frameworkB添加到frameworkA时,仅复制引用。但是,当frameworkB添加到frameworkTest时,复制的是代码,而不是引用。我说得对吗?有人指着我的右边