关于手动安装较新版本的iOS Base SDK遇到的坑
最近为了在xocde下测试ios 11.4系统app版本更新后的bug,又不希望升级xcode版本,就从网上下了个11.4的SDK,可是下载后直接复制到/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport后是不起作用的。打开xcode工程的build settings在Base SDK那一栏看还是latest iOS(iOS11.3)。 于是想到是不是DeviceSupport下面的两个文件Info.plist和version.plist的版本号没改过来的原因。然后在我更改了之后,坑爹的事情发生了。xcode依旧不能识别新的SDK,将两个上述文件恢复原状后,我就在Base SDK那一栏的下拉菜单中选择了other,弹出一个框输入: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/11.4 (15F79)。这下不仅不能识别,连原来的Base SDK iOS11.3都不能识别了,手动设置other选项为iphoneos也不起作用(“iphoneos(SDK not found)”)。于是我试着编译一下工程,看看问题出在哪。之后log报出如下错误:error: There is no SDK with the name or path '/Users/******/Documents/******/iphoenos'。 原来iOS Base SDK的other那一栏是以用户工程路径来识别的,直接填入iphoneos的SDKROOT字串会以相对路径定位到工程的绝对路径中。 知道是路径判断的问题就好办,打开终端输入: sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer/ 输入密码后重启xcode再来检查SDK路径,正常识别11.3。 下面就该找11.4的识别路径了。前面我尝试用替换Info.plist和version.plist的方法改默认Base SDK识别版本,可是失败了,看来路径不对,后来用终端命令:xcrun --sdk iphoneos --show-sdk-path查询默认SDK真实路径得:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.3.sdk
找到finder前往改文件夹,发现该文件夹仅仅是个替身。它的原身正是名为iPhoneOS.sdk的文件夹。而这个文件夹下的SDKSettings.plist正是对SDK进行了配置。而这个文件夹下的其他文件正是11.3SDK的内容,暂且不说把网站下载下来的SDK解压到这里对Xcode编译有什么影响,而出于安全考虑,本人暂不采用下一步行动,而是直接从app store更新的xcode,故此,坑爹的SDK升级之旅就此结束,还是绕了一圈,采取了从官方升级的方法。
记录此文以便以后有更高的升级SDK方法,在此更新。
嗨、骚年、快来消灭0回复。