每年 WWDC Apple 都會發表下一代的 iOS 與 Xcode 的 beta 版。有些開發者會一頭熱地嘗鮮,也有些人會擱置到正式版推出且穩定之後才來研究。介於這兩者之間,我覺得應該有比較中庸、合理的策略,好讓我們的 app 順利過渡到新一代的系統。

簡單來說我們最好交叉組合測試新舊版 Xcode 與 iOS 的關係。

以下為了方便說明我們把時間假定為 beta 版期間,以 2020 年發表的 Xcode 12 與 iOS 14 為例。如果你是開發其他 Apple 平台或版本上的 app,就自行代換系統及版號。

iOS 與 Xcode 版本組合

通常 A、C、D 這三種情境我們比較熟悉,也比較容易。

A. 現況 🔁

專案在目前 Xcode 正式版的相容性,也就是現況。

B. 向上相容 ⬆️

專案在舊版 Xcode 上 build 出來的,跑在新版 iOS 裝置。比如 Xcode 11.5 正式版去連接 iOS 14 beta 裝置或 Simulator。

其實這應該是在新版系統正式推出以後,使用者最有可能遇到的情境。試想看當新的 iOS 正式推出的時候,使用者可能就升級上去了,但開發者不見得已經準備好支援 iOS 14 的 app。就算準備好了,使用者也不見得會更新 app。

但是 Apple 從來就沒有為了向上相容的測試提供正式的方法

把一台 iOS 14 的裝置直接接到 Xcode 11 試著跑,會告訴你不支援,系統版本太新,沒辦法跑在實機上。Xcode 11 也沒辦法下載 iOS 14 的 Simulator 來用。

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/e4e387f2-6ffb-43a5-9b2a-488c6611efda/CleanShot_2020-10-28_at_11.50.442x.png

那麼我們要怎麼測試向上相容呢?請參考這篇文章(⚠️注意,DeviceSupport 那招已經不管用了):

怎樣讓 Xcode 11 產出的 App 跑在 iOS 14 上

C. 向下相容 ⬇️

專案在新版 Xcode build 出來以後,跑在舊版的 iOS 裝置。比如 Xcode 12 beta 連接 iOS 13 裝置。

WWDC 新版 Xcode 出來時,Apple 會希望你下載最新的 beta 版,來做向下相容的測試。直接把舊系統的裝置連到新版的 Xcode,通常安裝 app 不會有問題,我們要留意的是跑起來以後,新的 SDK 怎麼樣相容舊版系統,有沒有一些壞掉的情況。

一般來說向下相容比較不會有問題,因為 Apple 必須確保系統升級不會讓原有的應用程式無法使用。

而且除非你要升級 Xcode,不然這件事也沒那麼急。