26

我在项目中使用的一些外部框架遇到了兼容性问题。有没有办法在 Xcode 8 上更改 Base SDK?目前在项目设置中只显示最新的 SDK。

我尝试将旧版 SDK 从另一个版本的 Xcode 复制到此处,但没有成功:

/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/

4

3 回答 3

31

从 Xcode 7.3 开始,除了在 SDK 中复制之外,您还必须编辑某个 Info.plist 文件,如 agx 的帖子中针对 macOS 的描述。看起来iOS有一个类似的文件,在

Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Info.plist

尝试将其中的MinimumSDKVersion值从 10.0 更改为您想要的任何 SDK 版本。

我没有在 iOS 上尝试过这个,但是,使用这个解决方法,我只能使用 Xcode 8.0 (8A218a)(“GM”)在 macOS 10.6 上构建一个 macOS 目标。

更新

上面描述的 hack 在 Xcode 9 中停止为我工作。如果您想使用 Xcode 9+,请参阅我在 2017 年 11 月 22 日的最新回答。

于 2016-09-13T03:38:47.297 回答
8

我最初的答案,虽然它与 Xcode 8 一起使用,但由于某些不值得解释的奇怪原因,在特定客户的旧项目中不再与 Xcode 9 一起使用。所以我一直在使用另一种工作流程,这真的不算太糟糕。

为了处理这个项目,我在较旧的 Xcode(可以使用所需的 SDK 构建它)和最近的 Xcode 中打开。我将旧的 Xcode 窗口放在后台,并在最近的 Xcode 中完成我的工作。当我准备好测试更改时,我执行File > Save All ( ⌥⌘S ),然后切换到旧的 Xcode 和Build ( ⌘B )。构建完成后,我切换回最近的 Xcode 和Product > Perform Action > Run without Building ( ⌃⌘R )。因为 dSYM 文件格式没有改变,断点按预期工作。

优点是不需要破解 Xcode,我唯一需要记住的关于旧 Xcode(在我的例子中是 Xcode 3)是:⌘B

一个小警告:在这个特定项目的 Target 中,在Build Settings中,它有一个自定义Build Products Path。这是多年前构建 Mac 应用程序的典型方式。为确保您的两个 Xcode 都使用相同的产品,如果您的旧 Xcode 和最近的 Xcode 跨越更改了默认Build Products Path的版本,您可能需要设置Build Products Path

xcodebuild通过编写脚本和命令行工具,工作流程可能会变得更加容易xcode-select,但这已经足够了。随着 Apple 在今年的 WWDC 上宣布将在未来两年内取消对 32 位 Mac 应用程序的支持,我的客户无论如何都面临着一些艰难的决定。

于 2017-11-22T15:48:38.633 回答
0

您只需更改“部署目标”设置。您基本上使用最新的可用 SDK 作为基础 SDK,但选择目标 OS X 版本。当然,这取决于您为什么要使用较旧的 SDK?

于 2017-09-29T16:39:47.457 回答