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

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


当前回答

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

其他回答

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

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

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

在目标的General选项卡中,有一个Embedded Binaries字段。当你在那里添加框架时,崩溃就解决了。

参考资料在苹果开发者论坛。

我的环境:Cocos2d 2.0, Box2d, Objective C

除了做上面的其他答案,我最后去了General选项卡,并使WatchKit可选。

仅仅将框架拖到项目中是不够的。这就像是在同一个球场,却找不到自己的孩子。遵循以下步骤:

1)创建框架

开发框架。 一旦你的开发完成,COMMAND+B构建你的框架,并确保你收到“构建成功”。

2)访问你的框架

一旦你的框架项目成功构建,你就可以在项目的Products文件夹中访问它了。

右键单击你的.framework,选择“显示在Finder中”。

3)在项目中放置框架

将. Framework从Finder窗口拖放到应用项目的“Framework”文件夹中。

4)为框架配置app项目

选择项目中的顶层

选择目标

转到“Build Phases”,然后是“Link Binary with Libraries”,确保你的框架包含了可选选项。

仍然在“构建阶段”,转到左上角并选择+按钮。在下拉菜单中选择“New Copy Files Phase”。

向下滚动到新的“复制文件”部分,并确保您将目标设置为“框架”。将子路径保留为空。然后点击左下角的+按钮。

您将看到您的项目层次结构。向下滚动到第三步中添加框架的“Frameworks”文件夹,或者在顶部的搜索栏中搜索它。选择你的框架,然后点击“添加”。

确保选择了“代码签入复制”,并包含了您的框架。

5)清洁,然后运行你的项目

司令部SHIFT键+ K 指挥部+ R

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