Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios dyld:未为框架中的框架加载库_Ios_Objective C_Xcode_Ios8 - Fatal编程技术网

Ios dyld:未为框架中的框架加载库

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 原因:找不

我试图嵌入一个使用另一个框架的框架,该框架在模拟器中运行良好,但在iOS设备上崩溃:

dyld:未加载库:@rpath/FrameworkB.framework/FrameworkB 引用自:/private/var/mobile/Containers/Bundle/Application/B072CD7C-8595-4AE4-A506-26832A0F4402/FrameworkTest.app/Frameworks/FrameworkA.FrameworkA/FrameworkA 原因:找不到图像

这是我在Xcode中的结构:

  • FrameworkTest.xcodeproj(应用程序项目)
    • FrameworkA.xcodeproj(Cocoa-Touch框架)
      • FrameworkB.xcodeproj(Cocoa Touch框架)
应用程序(FrameworkTest)使用FrameworkA(嵌入FrameworkTest应用程序)中的类
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框架)
完成此操作后,应用程序项目可以包括FrameworkB.framework作为嵌入式库:

这解决了我的问题,并使其能够在iOS设备上运行

如果版本在发布时崩溃:
吊销您的企业分发证书并创建一个新证书以解决此问题。一旦我这样做了,它就工作得很好。

你在复制文件构建阶段得到了框架吗?@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时,复制的是代码,而不是引用。我说得对吗?有人指着我的右边