ios-sweet|Android 手機成功運行 iOS?

有開發者透過 GitHub 開源專案「ios-sweet」,成功令 Android 手機運行 iOS 16.7.16。該技術透過將 XNU 核心取代 Linux 核心,並仿製 iPhone X 的裝置樹,令系統誤以為在 iPhone 上啟動。雖然能操作主畫面及設定,但 Wi-Fi、藍牙及相機等功能仍失效。

ios-sweet|Android 手機成功運行 iOS?
ios-sweet|Android 手機成功運行 iOS?

Android 手機竟然可以行 iOS 16?

一般嚟講,Android 手機行 Android 系統,iPhone 則行 iOS,兩者係完全唔同嘅生態,唔可能互相使用對方嘅系統。不過喺而家 AI 時代,好多以前諗唔到嘅嘢都變成可能。最近有開發者成功嘗試喺一部 Android 手機上面運行 iOS 16,而且仲可以用到部分功能,展現出能人所不能嘅技術突破。

透過開源專案實現「跨界」運行

呢個突破係透過一個喺 GitHub上面名為「ios-sweet」嘅開源專案實現。值得留意嘅係,呢個方法令 Android 手機運行嘅係真正嘅 iOS,而唔係一般見到嘅模擬器或者沙盒環境。

GitHub上面名為「ios-sweet」嘅開源專案實現。值得留意嘅係,呢個方法令 Android 手機運行嘅係真正嘅 iOS,而唔係一般見到嘅模擬器或者沙盒環境。
GitHub上面名為「ios-sweet」嘅開源專案實現。值得留意嘅係,呢個方法令 Android 手機運行嘅係真正嘅 iOS,而唔係一般見到嘅模擬器或者沙盒環境。

技術原理分析

「ios-sweet」嘅運作方式係將目前 macOS 已經開源嘅 XNU 核心,取代 Android 原本嘅 Linux 核心,從而協調硬件同軟件之間嘅運作。喺裝置啟動嗰陣,系統會向核心提供一個「裝置樹」(Device Tree),用嚟描述手機入面嘅硬件組件。

一般 Android 嘅「裝置樹」係為 Linux 核心而寫,但「ios-sweet」採取咗一個唔同嘅做法:佢改用一個由 iPhone X 仿製而嚟嘅版本。咁樣做係為咗令 XNU 核心以為自己正係喺 iPhone 上面啟動,進而成功載入 iOS 16.7.16。

點解揀 iPhone X 嚟仿製?

開發者解釋,之所以揀 iPhone X,係因為佢係最後一款冇指針驗證(Pointer Authentication Code, PAC)嘅 iPhone。而 iPhone XS 及其之後嘅機型都必須要有 PAC 才能夠運作。巧合之餘,Redmi Note 10 Pro 所使用嘅 Snapdragon 732 處理器同樣唔使用 PAC,所以兩者正好可以互相配合,達成運行目標。

實際運行效果與限制

令人驚訝嘅係,系統唔單止識得載入鎖定畫面,解鎖之後仲可以使用部分功能。目前確認可以運作嘅部分包括:

  • 載入預載程式
  • 觸控操作
  • 返回主畫面及多工嘅滑動手勢
  • 手機本身嘅電源鍵同音量鍵
  • 開啟系統設定及控制中心

仍未解決嘅功能缺陷

雖然視覺同基本操作成功,但實用程度仍然好低。目前大部分核心硬件功能全部失效,包括:

  • 藍牙、Wi-Fi 及流動數據全部唔可以用
  • 喇叭、相機以及指紋、面部解鎖等感應器失效
  • 「訊息」、「電話」、「相片」等重要系統程式,開咗之後只會見到黑畫面

此外,由於蘋果公司(Apple Inc.)嘅加密系統未能運作,導致呢部「Android 版 iOS」嘅實用度遠低於真正嘅 iPhone X。

支援機種與未來展望

雖然呢個開源項目最初係喺 Redmi Note 10 Pro 上面實現,但由於專案嘅原始指引係針對 Snapdragon 晶片而編寫,所以主要係為內置 Snapdragon 處理器嘅 Android 手機而設。除咗 Redmi Note 10 Pro,其他可能支援嘅機種包括:

品牌 支援/嘗試機種
Xiaomi Redmi Note 12 Pro, Redmi 5 Plus
LG LG V60
OnePlus OnePlus 7T
Samsung Galaxy S23 Ultra

不過,唔同機種嘅支援情況各異,目前暫時未有公開詳細嘅運行資料。總括嚟講,呢個實驗證明咗 Android 裝置運行 iOS 並非完全冇可能,但目前依然處於試驗性質,距離穩定運行仍然有好大距離。

總結

這次由開發者透過「ios-sweet」專案實現嘅嘗試,雖然喺功能上仍有大量缺失,但喺技術層面上證明咗透過更換核心同仿製裝置樹,可以打破系統之間嘅隔閡。對於一般用家嚟講,呢個目前只係一個技術演示,暫時唔具備實際使用價值。