捆绑框架与XCode中的应用程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了捆绑框架与XCode中的应用程序相关的知识,希望对你有一定的参考价值。

我是XCode新手。我想跟随these instructions。很显然,我错过了一些东西,因为虽然我可以看到我想要的框架被复制到应用程序包中,但我无法引用它。

当我从我以外的机器启动应用程序时(或者如果我从/ Library / Frameworks /中删除OpenCV),我收到以下错误:

Dyld错误消息:未加载库:/Users/david/Library/Frameworks/OpenCV.framework/Versions/A/OpenCV参考自:/Users/g/Demo/Slates/ClipSplitter/build/Release/ClipSplitter.app/Contents/ MacOS / ClipSplitter原因:找不到图像

如果这有任何区别,我的系统上没有用户“david”。这也是从互联网上下载的预建OpenCV。 (Here’s a screenshot of the project,如评论中所要求的那样。)

答案

构建OpenCV.framework后,它已配置为使用/Users/david/Library/Frameworks/的安装路径。

由于您希望将库用作私有框架(安装在ClipSplitter.app/Contents/Frameworks/OpenCV.framework的应用程序包装器中),因此您必须更改其安装路径。这可以使用终端轻松完成,如下所示:

$ install_name_tool -id @executable_path/../Frameworks/OpenCV.framework/OpenCV <your_path>/OpenCV.framework/OpenCV

当然,你必须调整最后一个参数的路径。

现在,在链接应用程序时,修改后的框架告诉链接器dyld必须在应用程序的app包装器中搜索OpenCV.framework(在ClipSplitter.app/Contents/Frameworks目录中)。

现在,您必须将OpenCV.framework复制到应用程序包装器。您可以通过添加复制文件构建阶段来执行此操作作为构建过程的一部分:右键单击目标,选择添加 - >新构建阶段 - >新建复制文件构建阶段。从弹出的“目标”中选择“框架”并关闭对话框。

您的目标现在将包含一个新阶段,您可以通过拖动Xcode窗口左侧的Project Navigator中的图标来添加OpenCV.framework。请注意,Xcode不允许您使用“+”按钮将文件夹添加到“复制文件”阶段,因此为了复制框架,您必须将其拖放。

另一答案

您需要将构建设置“安装目录”设置为@executable_path/../Frameworks

请参阅https://developer.apple.com/library/content/documentation/MacOSX/Conceptual/BPFrameworks/Tasks/CreatingFrameworks.html中有关在应用程序包中嵌入专用框架的章节

问候

另一答案

使用Xcode 5,您可以使用应用程序目标的q​​azxswpoi面板来实现此目的。

此面板的默认外观是

通过按下“复制文件”下的“+”按钮,您可以将框架添加为文件,将其复制到应用程序包中的Frameworks中。

现在,在构建时,您的Framework将被复制到您的包中。

以上是关于捆绑框架与XCode中的应用程序的主要内容,如果未能解决你的问题,请参考以下文章

在 Xcode 上更改 Firebase Crashlytics 的捆绑包 ID

自定义捆绑在 iOS 框架文件中的故事板

将反应本机代码与 Xcode 捆绑时运行 .js 脚本

Xcode - 更改捆绑标识符但不更改产品名称

Xcode 管理器验证问题

更改捆绑 ID iOS