我在使用项目中的一些外部框架时遇到了兼容性问题。有没有办法在Xcode 8中更改基本SDK?目前,在项目设置中只显示最新的SDK。
我尝试将另一个版本的Xcode中的旧SDK复制到此处,但它没有起作用:
/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的目标。
更新
上述描述的解决方法在Xcode 9中已经不可用。如果您想使用Xcode 9或更高版本,请参考我在2017年11月22日发布的更新答案。
我的原始答案虽然适用于Xcode 8,但由于某种不值得解释的奇怪原因,在特定客户的旧项目中不再适用于Xcode 9。所以我一直在使用另一种替代工作流程,这并不太糟糕。
为了处理这个项目,我在旧版Xcode中打开它,该版本可以使用所需的SDK进行构建,并在最近的Xcode中打开它。我将旧的Xcode窗口放在后台,并在最近的Xcode中进行工作。当我准备好测试更改时,我执行“文件”>“全部保存”(⌥⌘S),然后切换到旧的Xcode并执行“构建”(⌘B)。构建完成后,我切换回最近的Xcode,并执行“产品”>“执行操作”>“无需构建即可运行”(⌃⌘R)。由于dSYM文件格式没有更改,断点按预期工作。
优点是不需要对Xcode进行任何黑客攻击,而且我需要记住有关旧版Xcode(我的情况下为Xcode 3)的唯一一件事是:⌘B。
一个小警告:在这个特定项目的目标中,在“构建设置”中,它有一个自定义的“构建产品路径”。这是多年前构建Mac应用程序的典型方式。为了确保您的旧版和最新版Xcode都使用相同的产品,如果您的旧版和最新版Xcode跨越了更改默认“构建产品路径”的版本,则可能需要设置“构建产品路径”。
通过脚本化xcodebuild
和xcode-select
命令行工具,工作流程可能会更加简单,但这已经足够好了。随着苹果在今年WWDC上宣布支持32位Mac应用程序在未来两年内消失,我的客户在任何情况下都面临着一些艰难的决策。