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