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 並下載,如下圖。
添加 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,即使修改後添加成功了,也運行不了。