突发奇想,既然我的 MacBook 也是 ARM 架构,那是不是也可以在 Android Studio 的模拟器( AVD )里面运行其他第三方镜像,于是就开始了这次尝试。
实际上我除了开发调试以外基本不会使用这个模拟器,所以纯粹是出于整活的乐趣,能跑得起来就算成功,实际体验倒是无所谓。
AVD 的镜像里有个 system.img ,一开始我以为直接替换就完事,后来发现这个 system.img 并不是安卓里那个 ext4 的 system 分区,它其实是一个 qemu raw 镜像,里面有两个分区,分别是 vbmeta 和 super ,熟悉搞机的应该知道安卓的 super 分区,这里就不多解释了。
而这个 super 分区里面包含 5 个分区,用 lpunpack 解包之后可以分别获得 vendor.img product.img system.img system_ext.img system_dlkm.img ,这里面的 system.img 才是替换的目标。替换成第三方镜像(这里我用的是 Andy Yan 大佬的 Lineage 21 GSI )之后,用 lpmake 重新打包成新的 super.img 。
将 super.img 写入上面说的 AVD 的 system.img 的 super 分区里,大致操作就是用 losetup 给 system.img 创建一个 loop 设备,使用 kpartx 映射分区,直接通过 cat 写入分区,最后 detach 即可。
不过直接运行还是有一些 SELinux 上的问题,只有将 SELinux 设为 permissive 才能开机。就如同上面说的,只要能正常进入系统就算成功,所以还是挺满意的。接下来有空我打算也试试其他有意思的 GSI 镜像。
1
boris1993Jr 181 天前 via iPhone
我刚开始搞机那会,就想用 AVD 跑第三方镜像来着,因为看着琳琅满目的包,根本不知道哪个好哪个不好,而我又是个穷酸大学生根本没有备胎机去试,用唯一的主力机成本又太高…
但是一顿网上冲浪之后,我想起我电脑是 x86 的,根本就不能用 xda 上那些 ARM 的包🤣 |
2
HangoX 180 天前
这个挺好的,会更流畅吗?官方那个有点卡
|
3
rainbowmolly 180 天前
有什么模拟器兼顾开发调试和游戏嘛
|