最近,接连有开发者成功在 Android 手机上运行 iOS 系统:
- Google Pixel 6 已经能够启动 iOS 16.7.16,进入桌面、打开设置,并通过触摸屏操作
- 小米8 运行 iOS 16.5,实现了 GPU 图形渲染、Wi-Fi 联网和 Safari 浏览器等功能
注意,这是真正的 iOS 系统移植,并非模仿 iPhone 界面的 Android 主题。

Pixel 6:成功进入 iOS 桌面,但运行很慢
GitHub 开发者 everettjf 最近公开了 pixel6ios 项目(GitHub),在 Google Pixel 6 上运行 iOS 16:

根据开发者公开的记录,项目已经实现了第一个阶段的目标:
- 启动 iOS 系统,进入主屏幕。
- 触摸屏可以操作。
- 能够打开「设置」以及「关于本机」页面。
- Safari 等应用仍存在无法正常使用的问题。
不过,目前系统运行速度非常缓慢,距离正常使用还有明显差距。
开发者表示,第一阶段的研究目标已经完成,项目暂时停止进一步开发。
小米 8:iOS 16 也跑起来了
前两天,也看到了另一位开发者公开的 dipper-xnu 项目(GitHub),使用小米8安装了 iOS 16.5 系统:

目前可以使用 Wi-Fi,可上网,可显示电量,可用手电筒,可以打开一些应用。
但与上面那个项目相同,都是非常早期的实验项目,想要完整使用 iOS 还有非常长的路要走。
安卓手机为什么能运行 iOS?
关键在于苹果操作系统使用的 XNU 内核。
macOS、iOS 和 iPadOS 都以它为基础。苹果公开了 XNU 的部分源代码,因此开发者可以研究它的实现,并尝试将其移植到其他硬件平台。
但 iOS 并没有像普通 Android 系统那样,为第三方手机提供完整的硬件适配方案。开发者需要自行解决启动流程、内存管理、设备树、存储控制器、显示输出、触摸屏以及各种驱动问题。
大致需要经过以下几个阶段:

其实,不止两台 Android 手机能装 iOS
此前,ios-sweet 项目已经尝试在 Redmi Note 10 Pro 上运行 iOS 16,并于 10 月 18 日报告成功进入主屏幕。
该项目使用苹果开源的 XNU 内核,配合 iPhone X 的 iOS 16.7.16 用户空间组件,让 Android 手机能够运行 iOS 的系统服务和原生界面。
随后,ios-topaz 又尝试将 iOS 16 运行在 Redmi Note 12 4G 上,实现了:
- 启动后进入 iOS 主屏幕
- 使用四个 Cortex-A73 核心
- 配备触摸键、音量键和电源键
- 支持 Wi-Fi
- Safari 浏览器支持 HTTPS 协议。
GPU 部分也已完成:Adreno 610 通过 Mesa freedreno 和 CoreAnimation 的 OpenGL ES 渲染器绘制整个 UI,所有八个核心(AMP)均参与其中,并负责声音、充电、壁纸、小部件和插件注入(ElleKit)。
从黑苹果到黑iOS
开发者们其实一直热衷于挑战操作系统和硬件之间的边界,尤其可以同时享受操作系统便利和高性价比的硬件。
而这一轮 iOS 才刚刚开始,说不定哪一天我们就能真的在一台安卓手机上,看到完整的 iOS 系统呢。
原文: