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

创建一个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

其他回答

在嵌入式二进制文件中添加框架

然后清洁和建造。

我在iOS 9中遇到了同样的问题。x版本

ISSUE IS: App crashes as soon as I open the app with below error.

dyld: Library not loaded: /System/Library/Frameworks/UserNotifications.framework/UserNotifications Referenced from: /var/containers/Bundle/Application/######/TestApp.app/TestApp Reason: image not found

我已经解决了这个问题,在链接框架和库UserNotifications.framework框架中将Required更改为Optional。

我也有同样的问题。我试着用我从未使用过的iPhone来构建我的项目,我没有添加新的框架。对我来说,清理工作很好(Shift+Command+K)。也许是因为我使用的是Xcode 7的beta 5和iPhone 6的iOS 9 beta,但它确实有效。

您需要将框架添加到一个新的Copy Files Build Phase,以确保框架在运行时被复制到应用程序包中。

有关更多信息,请参阅如何将“复制文件构建阶段”添加到我的目标。

官方苹果文档:https://developer.apple.com/library/mac/recipes/xcode_help-project_editor/Articles/CreatingaCopyFilesBuildPhase.html

令人惊讶的是,这里并没有记录所有必要的部分,至少对于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值。