转自:

https://hiraku.tw/2021/04/6428/

感谢原作者,如有侵权请评论联系删除文章

在升級到 Xcode 12 之後,有些人發現雖然 Xcode 允許安裝低版本的模擬器,但卻怎樣都無法新增該版本的模擬器裝置。詳細的文章內容可以參考這裡

實際上 Xcode 12 官方支援的最低版本為 iOS 11.4 的模擬器,如果沒有特別需求的話,我們從 Xcode 安裝 11.4 的模擬器就可以正常使用了。

但,若我因為某些原因,就是想安裝 11.3,甚至更低版本的 10.3.1 模擬器,該怎麼辦呢?

這時候就要用神奇的修改方式來繞過檢查啦~

首先,透過逆向工程得知,/Library/Developer/PrivateFrameworks/CoreSimulator.framework/Versions/A/CoreSimulator 是實際上在設定模擬器 runtime 版本上限的 Framework。根據偷看的結果,發現裡面寫死了一個 map,裡面包含各個版本對應的 macOS 系統上限。在這邊有兩個作法繞過,第一個就是直接 hook 或修改 binary,使得 Framework 不檢查版本限制,但這樣太麻煩了,我們用簡單一點的方法:把 runtime 改到不在限制列表當中即可。

具體作法很簡單,關閉模擬器跟 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 就可以加入了!

PS: 此方法最低可正常 debug 版本經測試為 iOS 10.x(我只測試 10.3),iOS 9.3 雖然可以執行模擬器,但是無法掛載 App 以及進行 debug。iOS 8 模擬器則是會直接造成電腦 kernal panic 重開機。

最新文章

  1. SQLExecption:Operation not allowed after ResultSet closed解决办法
  2. Centos搭建SVN服务器三步曲
  3. JSON转换为数组 但读取JSON的顺序目前没法保证
  4. Sublime Text 3使用技巧
  5. docker居然需要3.10以上的内核
  6. hdu5853 (后缀自动机)
  7. Install minidwep-gtk
  8. javascript中的call()和apply应用
  9. python连续爬取多个网页的图片分别保存到不同的文件夹
  10. Programming C#.Interfaces
  11. xntp的配置
  12. Hibernate框架笔记01_环境搭建_API_CRUD
  13. MySQL执行计划复习
  14. CentOS7安装k8s
  15. 走进JDK(八)------AbstractSet
  16. webpack Cannot find module 'webpack/schemas/WebpackOptions.json'
  17. 登陆ArcGIS Server Manager时一直显示”请稍后……”
  18. 在Winform中菜单动态添加“最近使用文件”
  19. MySQL 中文字符集排序
  20. 洛谷 P1310 表达式的值 解题报告

热门文章

  1. jdbc访问KingbaseES数据库SocketTimeoutException Read timed out
  2. 学习Java Day6
  3. Gold Transportation
  4. LeetCode-1705 吃苹果的最大数目
  5. python的常见问题解决
  6. 编程基础与python介绍
  7. SAP MD04屏幕显示增强
  8. windows搭建minikube环境学习Kubernates
  9. TensorFlow的基础结构
  10. linux 下安装django时出的错误