XIC iOS 版本的开发环境还是一台比较老的 MacBook Pro,是 2015 年的,macOS 升级到了可以升级到的最高版本 Monterey。在这个版本的系统上,Xcode 支持的 iOS 设备最高恐怕是 iOS 15。
这几天苹果对 iOS 推出了一组更新,最新的 17.3,版本 16 也推出了最新的 16.7.5。同样是由于 UMP 的问题,对 XIC iOS 也作了必要的流程接入,哪知上架又被狙击。开始是被告知与某已经注销的某开发账号所拥有的某产品雷同。经过不懈的申诉抗辩,最终苹果说雷同为误判,但同时,悲催的来了:由于产品在刚刚推出的 17.3 上不能正常工作,因而仍然不能上架。就是这么寸。
为了验证这个问题的影响面,合作小伙伴把自己的设备从 iOS 16 升级到了 17.3,证明苹果的告知所言非虚。还以为要和 Android 似的,要用他这台 17.3 的设备才能调试定位问题,但后来看了一眼出错截图,似乎与 Safari 的安全策略相关。心道不妙,赶忙把自己手里的一台 iOS 15 的设备升级到了 iOS 16 的最新版本 16.7.5,果不其然担心成为了现实,这个问题也存在。然而尴尬的是,MacBook Pro 2015 上的 Monterey 下的 Xcode 14.2,不能连接刚刚升级到 16.7.5 的 iPhone 了,而之前在 iOS 15 的时候,它们通讯还非常顺畅。
这很尴尬。手里有一台可以复现问题的设备,但是开发环境竟然不能与其通信。于是在网络上寻找解决的可能性,别说,还真有。在 GitHub 上有个项目,名字叫 iOSDeviceSupport,地址是 https://github.com/filsv/iOSDeviceSupport/。提供了针对各个不同版本的 iOS 设备的支撑文件,可以用于 Xcode,将其增加到对应目中,即可使 Xcode 连接到相应版本的真实设备上。该项目支持的 iOS 最高版本是 16.5,跟手里的 16.7 差了两个版本,有点狐疑其兼容性。不过注意到该项目有个 PR,点击去一看,是从本项目 fork 出去的一个衍生项目,其中提供了 16.6 的支持文件。满心欢喜以为能有的 16.7 的并不存在。然而,如此接近的版本号,已经可以放手一试了。
把 iOS 16.6 的支持文件下载后,解压放置到 Xcode 的支持文件存放路径下,/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport
。又在同级目录下为 16.6
这个子目录创建了名为 16.7
的软链接。然后把手机连接到电脑,果然,Xcode 顺利识别,不再提示兼容性问题了。
顺便吐槽下苹果,在设置里要打开开发者模式(它升级系统后竟然自动把之前处于打开状态的开发者模式给关闭了!),在搜索框里输入“开发者”竟然没有结果,需要手动到“隐私与安全”中去寻找,真是够可以的。