【全网首发】在 macOS 上用 UTM 跑原生 arm64/x86_64 Android
准备工作
本教程用于在 macOS 上通过 UTM 运行原生 arm64/x86_64 Android。
下载所需文件
| # | 所需文件 / 项目 | 说明 | 下载 |
|---|---|---|---|
| 1 | Mac 电脑 | 一台 Mac | — |
| 2 | 终端 | macOS 自带即可 | — |
| 3 | android-platform-tools | 建议使用 brew install android-platform-tools --cask 安装 | — |
| 4 | UTM.dmg | 所有 Mac · UTM 虚拟机 | utmapp/UTM |
| 5 | UTM-VM-lineage-**.*-yyyymmdd-jqssun-virtio_arm64only.zip | 主虚拟机文件 · arm64 · Apple Silicon | jqssun/android-lineage-qemu |
| 5 | UTM-VM-lineage-**.*-yyyymmdd-jqssun-virtio_*86_64.zip | 主虚拟机文件 · x86_64 · Intel Chip | jqssun/android-lineage-qemu |
| 6 | MindTheGapps-**.*.*-arm64-yyyymmdd_******.zip | 可选 · GApps Add-on · arm64 · Apple Silicon | MindTheGapps/16.0.0-arm64 |
| 7 | recovery_arm64only-userdebug.img | 可选 · 用于刷入未经验证的刷机包(用于刷入 GApps)的 Recovery · arm64 · Apple Silicon | jqssun/android-lineage-qemu |
| 7 | recovery_x86_64-userdebug.img | 可选 · 用于刷入未经验证的刷机包(用于刷入 GApps)的 Recovery · x86_64 · Intel Chip | jqssun/android-lineage-qemu |
| 8 | boot_arm64only.img | 可选 · Root 用 · arm64 · Apple Silicon | jqssun/android-lineage-qemu |
| 8 | boot_x86_64.img | 可选 · Root 用 · x86_64 · Intel Chip | jqssun/android-lineage-qemu |
GApps 仅有 arm64 架构 如果你是 Intel Chip 用户 不要想了 没有你们对应架构的 GApps 如果安装了不对应架构的 GApps 系统将会 bootloop
Recovery 和 boot.img(Kernel) 有架构区分 刷之前务必仔细核对 否则会出事
设置虚拟机
- 打开下载的
.utm包 - LineageOS 虚拟机设置 - Network - Network Mode - 选择 Shared Nework

调整虚拟机存储
- 虚拟机默认的
16GiB内部存储肯定不够用 所以在第一次开机前建议更改虚拟机内部存储大小 不然后期想要调整需要恢复出厂设置
分配前注意看磁盘名称 一定一定要 Resize vdb-2.qcow2 这个虚拟磁盘文件 这是 userdata 分区的盘
另一个 vda-2.qcow2 是 system 分区 随意调整此分区大小可能会导致不可预知的问题
Android 16 最大支持 16TiB 的磁盘 再高会 bootloop 但是不建议分配 16TiB 会导致 QEMU 模拟不正确 有概率导致虚拟机卡死

调整 CPU 与内存
- 接着来调整虚拟机内存大小和 CPU 核心数量
CPU 核心数量建议根据自己电脑的配置拉满 RAM 大小则建议 ≥ 6GiB QEMU 不会直接吃掉你分配的所有的 CPU 核心和内存 它会根据虚拟机占用动态调整
Force Multicore 功能可选择性开启(就我感觉 开不开其实差不多)
配置 Bootloader
- 先别急着进系统 进入
Bootloader以后先进入设置 进行一些设置 以方便联网调试和 root
Bootloader 里面的每项设置功能简介
A/B boot controlA/B 分区功能开关 此设置完全无法使用 因为此虚拟机完全不支持 A/B 分区😅
Boot animation开机动画 默认开启 自选是否打开
Dispiay resolution调整显示分辨率 系统内无法调这个 建议先默认 后面折腾好了再改 不然不方便切换窗口
HWUI renderer
SystemUI渲染器 不建议调 可能会导致SystemUI黑屏
Insecure ADB是否允许不安全的
ADB调试 也就是是否允许开放在5555端口的adb无线调试 必开 不然无法连接到adb调试
Low performance optimizations低性能优化 默认关闭 如果你的 Mac 是 Apple Sillicon 则保持默认 不用开 如果是 Intel 芯片用户则视情况开 大部分情况下你不需要开这个 保持默认即可
Mitigations保持默认即可
Quiet boot安静启动 即在启动时不显示内核日志 默认关闭 自选是否开启 开启后系统开机将不显示内核日志
Screen density调整系统
DPI也是系统内无法调的选项 这个也需要根据你 Mac 的屏幕分辨率 问 AI 选什么DPI合适 如果是1080P屏幕 那么默认即可
Serial console function开启或关闭虚拟机的串口控制台功能 如果没有特殊的安卓开发需求 保持默认即可
SELinux设置 SELinux 状态 默认
Enforcing(强制模式)如果你要 root 的话(特别是用KernelSUroot 的话) 必须改成Permissive(宽容模式)否则打开开发者模式设置会闪退
Wi-Fi implementation是否打开虚拟 Wi-Fi 功能 默认关闭 必须选择
VirtWifi using eth0 interface否则无法打开无线调试 无法adb虚拟 WiFi
ZRAM虚拟内存功能 默认关闭 建议打开
GRUB: timeout
GRUB超时时间GRUB是引导器(bootloader) 也就是现在在的这个界面 这里调整 GRUB 超时时间 默认 3s 超时后自动进入系统 按上下键可中断倒计时 根据需要自己调
Show current setting显示当前选择的选项


初始化 userdata 分区
-
如果你调过
userdata分区大小的话 退出到主界面 选择Recovery并且进入接下来选择
Factory reset-Format data/factory reset选择
Format data并且等待 等待时长由你磁盘大小决定Caution 但是还是提醒一下 这一步会清空你虚拟机里面的所有数据 有重要数据千万千万记得备份虽然虚拟机里大概率没有重要数据TipERROR: recovery: Failed to save locale to /cache/recovery/last_locale: No such file or directory若 Rocovery 里报错这些是正常的 是因为没有初始化系统导致的当 UI 再次出现 下方显示
Data wipe complete.就可以了正常完成后应该输出:
-- Wiping data...Formatting /data...Formatting /cache...Formatting /metadata....Resetting memtag message...Data wipe complete.






[可选] 安装 Google Apps
-
[可选] 安装 Google Apps
CautionGApps 必须在第一次启动系统之前安装 否则会
bootloop所以第一次启动系统前千万要斟酌一下 确保不会用到 GApps 再启动 不然后期再想装只能恢复出厂设置再安装Note因为虚拟机自带的
Recovery有强制包签名校验 导致刷入开源没有签名的 GApps Add-on 会报错ERROR: Recovery: Faiied to verffy whole-file signature.Update package verification took 10.6 s (result 1).ERROR: recovery: Signature verification failed.ERROR: recovery: Err: 21所以要刷入带
userdebug标签的允许刷入未经签名的包的Recovery
刷入 userdebug Recovery
-
进入
Recovery首页 -Advanced-Enter fastboot进入fastbootd并记下上面的IPv4 address - 192.168.**.* -
进入到
Fastbootd首页 记下上面的IPv4 address - 192.168.**.* -
接着打开终端
Terminal window fastboot -s tcp:$HOST_IP flash recovery /path/to/recovery_arm64only-userdebug.img # 把 $HOST_IP 替换成 Fastboot 里面给你的 IP /path/to/recovery_arm64only-userdebug.img 替换成你下载的 Recovery 镜像的位置- 输出应该类似这样:
Terminal window Sending 'vendor_boot' (59492 KB) OKAY [ 0.132s]Writing 'vendor_boot' OKAY [ 0.068s]Finished. Total time: 0.251s -
Fastbootd里选择Power off关机 重启再启动到Recovery-Apply update-Apply from ADB- 再次记下上面的 `IPv4 address - 192.168.**.*TipERROR: recovery: [libfs_mgr] Failed to mount /mnt/vendor/shared: Invalid argumentERROR: recovery: [libfs_mgr] Failed to mount /mnt/vendor/shared: No such file or directoryERROR: recovery: [libfs_mgr] Failed to mount for path [/mnt/vendor/shared]若 Rocovery 里报错这些也是正常的 还是因为没有初始化系统导致的
通过 ADB 侧载 GApps
-
底下显示
Now send the package you want to apply to the device with "adb sideload <filename>"...时打开终端Terminal window adb connect $HOST_IP # 把 $HOST_IP 替换成 Recovery 里面给你的 IP- 输出应该类似这样:
Terminal window * daemon not running; starting now at tcp:5037* daemon started successfullyconnected to 192.168.**.*:5555- 接下来用
adb devices检查是否连接上:
Terminal window adb devicesList of devices attached192.168.**.*:5555 recovery-
显示如上则已连接上
-
接下来开始侧载:
Terminal window adb sideload -h /path/to/MindTheGapps-**.*.*-arm64-yyyymmdd_******.zip # 把 /path/to/MindTheGapps-**.*.*-arm64-yyyymmdd_******.zip 替换成你下载的 GApps 包的位置Recovery里会提示
Signature verification failedInstall anyway?- 选
Yes
Tip应当会输出
ERROR: recovery: Failed to find CPU thermal info in /sys/class/thermal/报错这个这是正常的 因为虚拟机的缘故
Supported API:3Finding update package.Verifying update package.ERROR: recovery: failed to verify whole-file signatureUpdate package verification took 10.6 s (result 1)・ERROR: recovery: Signature verification failedERROR: recovery: error: 21报错这个也是正常的 因为开源 GApps 没有包签名 只要在
Recovery里提示Signature verification failedInstall anyway?的时候选
Yes即可继续Installing update.**********************MindTheGapps installer**********************正式开始安装
-
当 UI 再次出现
Recovery日志提示Cleaning up filesUnmounting partitionsDone!Install completed with status 0.即已完成
选择
Reboot system now进入系统









[可选] Root
Root 部分使用 KernelSU,对应准备工作中的
boot.img与 KernelSU Manager。
进入系统并开启 ADB
bootloader里选择第一项LineageOS **.*进系统- 第一次启动系统可能会比较慢 特别是你选择了装 GApps 的时候 具体时长与电脑性能有关

-
简单过下
OOBETip带 GApps 的版本和不带的 OOBE 略有区别
这是无 GApps 的版本:

无 GApps OOBE

-
先连下 WiFi 再进
设置-关于本机- 狂点最下面的Build 号进入开发者模式 -
设置-系统-开发者选项-无线调试-允许

- 进入
无线调试记下里面的 IP

- 打开终端
adb connect $HOST_IP # 把 $HOST_IP 替换成 Recovery 里面给你的 IP- 输出应该类似这样:
* daemon not running; starting now at tcp:5037* daemon started successfullyconnected to 192.168.**.*:5555接下来用 adb devices 检查是否连接上:
adb devicesList of devices attached192.168.**.*:5555 recovery- 显示如上则已连接上
安装并配置 KernelSU
- 安装
KernelSUManager
adb -e install /path/to/KernelSU_v*.*.*-**-g******ab_*****-release.apk # 把 /path/to/KernelSU_v*.*.*-**-g******ab_*****-release.apk 换成你下载的管理器路径- 输出应该类似这样:
Performing Streamed InstallSuccess- 推送
boot.img到虚拟机并修补
adb -e push /path/to/boot_*.img /sdcard # 把 /path/to/boot_*.img 换成你下载的 boot.img 路径- 输出应该类似这样:
/path/to/boot_*.img: 1 file pushed, 0 skipped. ** MB/s (46219264 bytes in 0.100s)- 打开
KernelSU管理器 -选择文件并修补- 选择boot.img- [可选]备份为原厂镜像&总是给 Shell 授予 Root 权限&启动时强制启用 ADB 调试-下一步-KMI选择见下
如何查看 KMI
记住圈出来的路径


- 输出应该类似这样:
_ __ _ ____ _ _ | |/ /___ _ __ _ __ ___| / ___|| | | | | ' // _ \ '__| '_ \ / _ \ \___ \| | | | | . \ __/ | | | | | __/ |___) | |_| | |_|\_\___|_| |_| |_|\___|_|____/ \___/
- Bootdevice: /data/data/me.weishu.kernelsu/cache/boot.img- Preparing assets- Unpacking boot image- KMI: android16-6.12- Adding KernelSU LKM- Backup stock boot image- Stock image has been backup to- /data/user_de/0/me.weishu.kernelsu/boot_backup/ksu_backup_*- Adding allow shell config- Adding adb_debug props- Adding props to enable adbd- Repacking boot image- Output file is written to- /storage/emulated/0/Download/kernelsu_patched_yyyymmdd_*.img # ⬅️ 记住这行- Done!刷入修补后的 boot.img
- 从虚拟机拉取修补好的
boot.img并刷入
-
终端输入
adb -d pull /storage/emulated/0/Download/kernelsu_patched_yyyymmdd_*.img ./ # 把 /storage/emulated/0/Download/kernelsu_patched_yyyymmdd_*.img换成你刚刚记的目录 -
重启虚拟机 -
LineageOS **.* Recovery-Advamced-Enter fastboot进入Fastbootd -
fastboot -s $HOST_IP flash boot kernelsu_patched_yyyymmdd_*.img直接刷入- 输出应该类似这样:
Terminal window Sending 'boot' (45616 KB) OKAY [ 0.127s]Writing 'boot' OKAY [ 0.270s]Finished. Total time: 0.546s -
选择
Reboot system now重启系统

如果你在开机日志里看到了 KernelSU: * 证明成功了

Enjoy!
把搞好的 .utm 虚拟机包传到 iPad 上 用 UTM 导入即可在 iPad 上享受 Android Tablet 了()
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!




