今是昨非

今是昨非

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

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 模擬器

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。