我试图创建一个基本的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目录中,构建链接是正确的


当前回答

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

构建框架

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

包括框架

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

其他回答

上面的选项对我来说不可能包括。 我通过指定Runpath搜索路径来解决这个问题

这是在“构建设置”选项卡上。 在“链接”部分。 将“Runpath Search Paths”更改为$(inherited) @executable_path/Frameworks

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

构建框架

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

包括框架

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

我尝试了许多修复,但对我有效的是删除构建方案的构建选项卡中列出的缺失目标。您可以通过打开当前方案的编辑窗口来访问它。

编辑:我的UI测试目标不能正常工作,我找到的解决方案是删除它并重新生成它。

这可能发生在Pod框架中。 我在AnswerBotProvidersSDK.framework中也遇到了同样的问题,我的错误是,我只在目标构建阶段设置运行脚本检查安装构建。

不正确的设置:

正确设置:

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

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