作者:yyyyyyyyyyyyy燁 | 来源:互联网 | 2023-05-20 12:36
我试图嵌入一个使用另一个框架的框架,这在模拟器中运行得很好,但它在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
使用B
FrameworkB中的类(在FrameworkA中链接).
这在模拟器中工作得很好,但它在设备上不起作用.
结构可能看起来有点奇怪,但我在开发应用程序时正在开发框架,这就是为什么我想在我的应用程序项目中添加框架项目.
我已经在GitHub上传了这个项目供你查看,如果你需要仔细看看.(该类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.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作为嵌入式库:
这解决了我的问题,并使其可以在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作为嵌入式库:
这解决了我的问题,并使其可以在iOS设备上运行.
如果构建在发布时崩溃:
撤销企业分发证书并创建新证书以解决问题.一旦我这样做,它完美地工作.
2> micromanc3r..:
我也有类似嵌入式框架的问题,我刚从GitHub尝试了你的代码.
选项1(不适合团队合作)
使错误消失的原因是在FrameworkTest目标的General选项卡中将FrameworkB添加到Embedded Binaries.
选项2
那么,与其他开发人员分享项目肯定很重要:).你尝试过这种方法吗?在FramewrokA的Build Phases中添加新的复制文件阶段,并将FrameworkB添加到Frameworks目标中.
但我不确定为什么它在模拟器上有效.如果有人知道,请随时发表评论.
干杯