热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

dyld:未为框架内的框架加载库

如何解决《dyld:未为框架内的框架加载库》经验,为你挑选了2个好方法。

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

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

这是我在Xcode中的结构:

FrameworkTest.xcodeproj(应用程序项目)

FrameworkA.xcodeproj(Cocoa Touch Framework)

FrameworkB.xcodeproj(Cocoa Touch Framework)

应用程序(FrameworkTest)使用FrameworkA中的一个类A(嵌入在FrameworkTest应用程序中).该类A使用BFrameworkB中的类(在FrameworkA中链接).

这在模拟器中工作得很好,但它在设备上不起作用.

结构可能看起来有点奇怪,但我在开发应用程序时正在开发框架,这就是为什么我想在我的应用程序项目中添加框架项目.

我已经在GitHub上传了这个项目供你查看,如果你需要仔细看看.(该类A在AppDelegate.m文件中调用)

为什么这在iOS模拟器中工作而不在设备上?我怎样才能让它在设备上运行?

编辑:

作为simonthumper暗示的意见,我也尝试添加FrameworkB.frameworkCopy Files为框架,构建阶段的FrameworkA目的地,但是,让我在控制台此错误:

dyld:未加载库:@ rpath/FrameworkB.framework/FrameworkB参考自:/private/var/mobile/Containers/Bundle/Application/2A38A2BC-9CD7-4AF6-9E50-42C16D92D6B2/FrameworkTest.app/Frameworks/FrameworkA.framework/ FrameworkA原因:找不到合适的图像.找到了:/private/var/mobile/Containers/Bundle/Application/2A38A2BC-9CD7-4AF6-9E50-42C16D92D6B2/FrameworkTest.app/Frameworks/FrameworkA.framework/Frameworks/FrameworkB.framework/FrameworkB:mmap()错误1 at地址= 0x10012C000,大小= 0x00008000段= __ TEXT in Segment :: map()映射/private/var/mobile/Containers/Bundle/Application/2A38A2BC-9CD7-4AF6-9E50-42C16D92D6B2/FrameworkTest.app/Frameworks/FrameworkA.framework /Frameworks/FrameworkB.framework/FrameworkB

Thomas Cleme.. 12

我联系了Apple这个问题并找到了解决问题的方法.Apple的技术支持明确表示,我需要将FrameworkB.xcodeproj添加到我的应用程序项目中,因此我的项目结构是:

FrameworkTest.xcodeproj(应用程序项目)

FrameworkA.xcodeproj(Cocoa Touch Framework)

FrameworkB.xcodeproj(Cocoa Touch Framework)

FrameworkB.xcodeproj(Cocoa Touch Framework)

当我这样做时,应用程序项目可以包含FrameworkB.framework作为嵌入式库: FrameworkTest.xcodeproj构建阶段

这解决了我的问题,并使其可以在iOS设备上运行.

如果构建在发布时崩溃: 撤销企业分发证书并创建新证书以解决问题.一旦我这样做,它完美地工作.



1> Thomas Cleme..:

我联系了Apple这个问题并找到了解决问题的方法.Apple的技术支持明确表示,我需要将FrameworkB.xcodeproj添加到我的应用程序项目中,因此我的项目结构是:

FrameworkTest.xcodeproj(应用程序项目)

FrameworkA.xcodeproj(Cocoa Touch Framework)

FrameworkB.xcodeproj(Cocoa Touch Framework)

FrameworkB.xcodeproj(Cocoa Touch Framework)

当我这样做时,应用程序项目可以包含FrameworkB.framework作为嵌入式库: FrameworkTest.xcodeproj构建阶段

这解决了我的问题,并使其可以在iOS设备上运行.

如果构建在发布时崩溃: 撤销企业分发证书并创建新证书以解决问题.一旦我这样做,它完美地工作.



2> micromanc3r..:

我也有类似嵌入式框架的问题,我刚从GitHub尝试了你的代码.

选项1(不适合团队合作)

使错误消失的原因是在FrameworkTest目标的General选项卡中将FrameworkB添加到Embedded Binaries.xcode  - 嵌入式二进制文件

选项2

那么,与其他开发人员分享项目肯定很重要:).你尝试过这种方法吗?在FramewrokA的Build Phases中添加新的复制文件阶段,并将FrameworkB添加到Frameworks目标中. 新的复制阶段

但我不确定为什么它在模拟器上有效.如果有人知道,请随时发表评论.

干杯


推荐阅读
author-avatar
yyyyyyyyyyyyy燁
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有