我在项目中使用的一些外部框架遇到了兼容性问题。有没有办法在 Xcode 8 上更改 Base SDK?目前在项目设置中只显示最新的 SDK。
我尝试将旧版 SDK 从另一个版本的 Xcode 复制到此处,但没有成功:
/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/
从 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 日的最新回答。
我最初的答案,虽然它与 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 应用程序的支持,我的客户无论如何都面临着一些艰难的决定。
您只需更改“部署目标”设置。您基本上使用最新的可用 SDK 作为基础 SDK,但选择目标 OS X 版本。当然,这取决于您为什么要使用较旧的 SDK?