今是昨非

今是昨非

日出江花红胜火,春来江水绿如蓝

Xcode 12.x添加iOS 10.x模拟器

Xcode 12.x 添加 iOS 10.x 模拟器#

背景#

笔者昨天遇到个问题,有用户反馈在 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 并下载,如下图。

wecom20210715-161409.png

添加 iOS 10.3.1 模拟器#

通常添加模拟器,是选中 Xcode,通过顶部菜单的 Window -> Device and Simulators,选中 Simulators,点击左下角的 +,添加模拟器,如下图

screen shot 2021-07-15 at 16.19.20.png

会发现,即使下载了 iOS 10.3.1 模拟器,依旧不能添加,下载了却不能添加。

x5ltb.png

于是笔者接着查找,终于仅有的一篇真理文章在 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 就可以加入了!

笔者实践经验:

  1. 修改 Plist 可以拷贝出来修改后再拷贝进去替换
  2. 修改后确实可以添加 10.3 的模拟器,mac 11.4 系统,可以正常运行操作。
  3. Mac 12.0 beta 系统,即 macOC Moterey,即使修改后添加成功了,也运行不了。

参考#

在 Xcode 12 執行低版本的 iOS 模擬器

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。