背景
笔者昨天遇到个问题,有用户反馈在iOS 10.3.1的手机上,有个网页打开白屏。但是问题是笔者手头都没有10.x版本的手机,所以想安装模拟器来尝试复现。
然而,笔者发现电脑上的Xcode版本是12.5.1,已经不支持iOS 10.3.1的模拟器下载了。
步骤
下载iOS 10.3.1模拟器
然后笔者搜索后发现,Xcode 12.4还是支持下载iOS 10.3.1的模拟器的,于是去Xcode 下载网站,下载了Xcode 12.4,然后CMD +
,打开Xcode的偏好设置,在Components选项卡中,找到iOS 10.3.1 Simulator并下载,如下图。
添加iOS 10.3.1模拟器
通常添加模拟器,是选中Xcode,通过顶部菜单的Window -> Device and Simulators,选中Simulators,点击左下角的+,添加模拟器,如下图
会发现,即使下载了iOS 10.3.1模拟器,依旧不能添加,下载了却不能添加。
于是笔者接着查找,终于仅有的一篇真理文章在 Xcode 12 執行低版本的 iOS 模擬器蹦了出来,按照文章的说法是,模拟器runtime版本的Framework中map文件,里面设定各版本对应的Mac OS系统上限,所以会导致添加不了。
解决方法就是:修改模拟器的Info.plist中对应的CFBundleIdentifier,绕过map文件即可。
具體作法很簡單,關閉模擬器跟 Xcode,然後舉例來說我要強制執行 10.3 模擬器,就編輯 /Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 10.3.simruntime/Contents/Info.plist,把 CFBundleIdentifier 從 com.apple.CoreSimulator.SimRuntime.iOS-10-3 改成 com.apple.CoreSimulator.SimRuntime.iOS-10-3-1,透過後面加一個 -1 的方式,把讓版本限制檢查的函數找不到該 bundle name,然後再打開 Xcode 就可以加入了!
笔者实践经验:
- 修改Plist可以拷贝出来修改后再拷贝进去替换
- 修改后确实可以添加10.3的模拟器,mac 11.4系统,可以正常运行操作。
- Mac 12.0 beta系统,即macOC Moterey,即使修改后添加成功了,也运行不了。