我试图创建一个基本的OS X框架,现在我刚刚创建了一个测试框架:TestMacFramework.framework,我试图将它导入到一个全新的OS X应用程序项目。

我已经构建了.framework文件并将其导入到新项目中,框架链接正常,我可以引用我添加到框架构建阶段部分的公共头文件。

然而,当我尝试运行容器应用程序时,我得到以下错误:

dyld: Library not loaded: /Library/Frameworks/TestMacFramework.framework/Versions/A/TestMacFramework
  Referenced from: /Users/samharman/Library/Developer/Xcode/DerivedData/TestMacContainer-dzabuelobzfknafuhmgooqhqrgzl/Build/Products/Debug/TestMacContainer.app/Contents/MacOS/TestMacContainer
  Reason: image not found

在谷歌了一下之后,我意识到我需要在我的容器应用程序构建阶段添加一个复制文件部分,所以我已经这样做了,并像这样设置它…

然而,我仍然得到运行时错误。显然我在这里做错了什么,但是苹果开发者库的资源引用了Xcode 2,所以不是很有帮助!

我错过了什么?

更新:

我可以在构建日志中看到我的TestMacFramework.framework被复制到.app contents/frameworks目录中,但它没有被安装到HD上的Library/ frameworks目录中

更新2:

如果我手动将TestMacFramework.framework复制到Library/Frameworks目录中,构建链接是正确的


当前回答

我在Xcode 13 beta版中使用uniformtypeidentifier .framework遇到了这个问题。该应用程序无法在低于13的iOS版本上运行。 下面的方法解决了这个问题:

去目标->构建阶段->链接二进制与库->添加框架->添加状态为“可选” 以上方法对我来说非常有效!希望这能有所帮助!

其他回答

所以我设法让它工作了,只要你有正确的指令,这很简单。我所寻找的是一个“私有”框架,它存在于App包中,而不是被写入系统库文件夹。

构建框架

添加目标以创建Cocoa Framework 在目标“构建设置”中将“安装目录”配置为“@executable_path/../Frameworks” 构建库,并从存档或产品目录中访问.framework

包括框架

将创建的。framework文件拖到Xcode项目中,确保勾选“复制文件到目录” 在包含应用程序的目标中,添加一个新的“Copy File Build Phase” 将“目标”设置为“框架” 拖入已创建的.framework

我只在真正的设备(iPhone SE)上运行时遇到过这个问题。在模拟器项目工作如预期。

我尝试了所有的修复从这个线程和从这里。 这些对我都没用。

对我来说,重启iPhone后问题就解决了。

我做了:

清洁构建文件夹, 干净的衍生数据, 从设备上删除app 重新启动设备

最终成功了。:)

如果其他解决方案都失败了,不要忘记尝试一下。

I found that this issue was related only to the code signing and certificates not the code itself. To verify this, create the basic single view app and try to run it without any changes to your device. If you see the same error type this shows your code is fine. Like me you will find that your certificates are invalid. Download all again and fix any expired ones. Then when you get the basic app to not report the error try your app again after exiting Xcode and perhaps restarting your mac for good measure. That finally put this nightmare to an end. Most likely this has nothing to do with your code especially if you get Build Successful message when you try to run it. FYI

应该有一个“运行脚本”到“构建阶段”:'/usr/local/bin/carthage copy-frameworks'

在“运行脚本”的“输入文件”中,您应该将路径添加到库中。是这样的:

Xcode 11:

在Xcode 11中将框架添加到通用->框架,库和嵌入式内容

添加后,确保你选择嵌入和签名选项