这个崩溃是一个阻塞问题,我使用以下步骤来重现这个问题:

创建一个Cocoa Touch框架项目 添加一个swift文件和一个类Dog 为设备构建一个框架 在Swift中创建一个单视图应用程序 导入框架到应用程序项目 从ViewController中的框架实例化swift类 在设备上构建并运行应用程序

应用程序在启动时立即崩溃,这是控制台日志:

dyld: Library not loaded: @rpath/FrameworkTest03.framework/FrameworkTest03
  Referenced from: /var/mobile/Applications/FA6BAAC8-1AAD-49B4-8326-F30F66458CB6/FrameworkTest03App.app/FrameworkTest03App
  Reason: image not found

I have tried to build on iOS 7.1 and 8.0 devices, they both have the same crash. However, I can build an app and run on the simulator fine. Also, I am aware that I can change the framework to form Required to Optional in Link Binary With Libraries, but it did not completely resolve the problem, the app crashed when I create an instance of Dog. The behavior is different on the device and simulator, I suspect that we can't distribute a framework for the device using a beta version of Xcode. Can anyone shed light on this?


当前回答

解决了为我取消选择“仅在安装时复制”在构建阶段->嵌入框架

其他回答

对于SumUp用户,如果您正在加载最新的SumUpSDK。xcFramework,然后您需要确保从目标的应用程序的General选项卡中将其设置为“Embed & Sign”。

也就是说,把上面的语句颠倒过来(这样更容易理解):

转到“项目导航器”(即显示所有项目项的第一个图标等) 从树的顶部选择您的项目。 在页面中间的菜单上(稍向右),在“Targets”下选择您的应用程序 在顶部选项卡中,选择“General” 向下滚动到“框架,库和嵌入式内容” 从列表中选择您的Lib 从它旁边的下拉列表中选择“嵌入&签名”。 清洁 重新构建并运行。

我希望这能有所帮助。

H

如果有开发pod,从模拟器中删除应用程序,从pod中安装-> clean ->再次运行…

对我来说,我必须把XcodeKit.framework从“不嵌入”->“嵌入&签名”

After trying all the methods available on internet and my own trial and error tricks 100 times. Finally I was able to solve it. – Apeksha Sahu 6 mins ago Goto iTunes in Mac --> accounts-->Authorize this computer – Apeksha Sahu 5 mins ago second step.... Goto developer in settings in iPad and iPhone and reindex with identifiers and clear trust computers everything. It worked for me........ ....... After reinstalling Mac OSHigh seria 10.13.15 version from Mac OS seirra beta latest version, to reinstalling Xcode latest version, after updating all certificates. etc etc etc... as many methods as you can think I did. –

令人惊讶的是,这里并没有记录所有必要的部分,至少对于Xcode 8来说是这样。

我的案例是一个定制的框架,作为同一个工作空间的一部分。事实证明,它的建造是错误的。根据jeremyhu对这篇文章的最后回复:

https://forums.developer.apple.com/thread/4687

我必须在框架项目的构建设置下设置动态库安装名称库(DYLIB_INSTALL_NAME_BASE),然后重新构建它。它被错误地设置为$(LOCAL_LIBRARY_DIR),我必须将其更改为@rpath。

所以在App Project的链接处理阶段,它指示主机App在运行时从/Library/Frameworks/fw动态加载框架。Framework/fw(运行时文件系统的根目录)而不是app /Frameworks/fw。框架/ fw

关于所有其他设置:它必须在构建阶段的3个地方,但当你将它添加到托管应用程序的General选项卡的嵌入式二进制设置时,这些都是一次性设置的。

我不需要设置额外的Copy Files阶段,这对于嵌入阶段来说似乎是多余的。通过检查构建记录的末尾,我们可以保证这是不必要的。

PBXCp /Users/xyz/Library/Developer/Xcode/DerivedData/MyApp-cbcnqafhywqkjufwsvbzckecmjjs/Build/Products/Debug-iphoneos/MyFramework.framework

[删除了许多冗长的行,但从Xcode UI中的简化文本中可以清楚地看到。]

我仍然不知道为什么Xcode在我身上错误地设置了DYLIB_INSTALL_NAME_BASE值。