尝试在 Mac 的 AVD 里运行第三方 GSI

7 天前
 h4ckm310n

突发奇想,既然我的 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 镜像。

https://imgur.com/EhOQNbm

766 次点击
所在节点    Android
3 条回复
boris1993Jr
7 天前
我刚开始搞机那会,就想用 AVD 跑第三方镜像来着,因为看着琳琅满目的包,根本不知道哪个好哪个不好,而我又是个穷酸大学生根本没有备胎机去试,用唯一的主力机成本又太高…
但是一顿网上冲浪之后,我想起我电脑是 x86 的,根本就不能用 xda 上那些 ARM 的包🤣
HangoX
7 天前
这个挺好的,会更流畅吗?官方那个有点卡
rainbowmolly
6 天前
有什么模拟器兼顾开发调试和游戏嘛

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1052017

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX