Xcode - 使用SDK 10.9与ApplicationServices.framework进行链接导致10.7不兼容

问题描述:

我在10.7上运行Cocoa应用程序时遇到问题,即使它好像正在采取正确的步骤。这里是我正在做什么和似乎是错误的描述:Xcode - 使用SDK 10.9与ApplicationServices.framework进行链接导致10.7不兼容

我建立在XCode 5.0.2和SDK 10.9的10.8机器上,部署目标为10.7。我的一个动态库使用了一些CoreGraphics函数,因此我将该库与ApplicationServices.framework链接起来。 (据我所知,在10.8之前,CoreGraphics被包含在ApplicationServices中,所以我不能直接与CoreGraphics链接,否则我会遇到问题。)

构建完成后,我使用CoreGraphics的库直接引用CoreGraphics .framework at /System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics,但该路径在10.7上不存在。当我在10.8+上运行应用程序时,它运行正常,但在10.7上,它试图加载不存在的框架。

我(哈克)解决方案:

敲我的头这一段时间后,我决定去核,并添加一个新的构建阶段在我的库中的CoreGraphics中引用更改为与兼容的路径10.7,在ApplicationServices.framework下面。我的脚本执行以下操作:

install_name_tool -change /System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics /System/Library/Frameworks/ApplicationServices.framework/Frameworks/CoreGraphics.framework/Versions/A/ CoreGraphics myLibrary.dylib

这个工程,但它似乎是一个愚蠢的黑客攻击。有没有人看过这个?

+0

我有同样的问题,这次用Swift应用程序。对于在XCode 5中构建的正常应用程序,部署目标为10.7,没有这样的情况。但是你的脚本不适合我。我应该在那里使用什么库?并且是需要的路径? –

您必须对其进行测试,但也许只需链接ApplicationServices.framework即可。

否则,你应该能够得到它的弱链接的工作:从需要最优链接二进制与图书馆构建阶段,改变现状。有关弱链接的更多细节可以在here找到。