V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
h4ckm310n
V2EX  ›  Android

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

  •  
  •   h4ckm310n · 5 天前 · 690 次点击

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

    3 条回复    2024-06-24 22:35:14 +08:00
    boris1993Jr
        1
    boris1993Jr  
       5 天前 via iPhone
    我刚开始搞机那会,就想用 AVD 跑第三方镜像来着,因为看着琳琅满目的包,根本不知道哪个好哪个不好,而我又是个穷酸大学生根本没有备胎机去试,用唯一的主力机成本又太高…
    但是一顿网上冲浪之后,我想起我电脑是 x86 的,根本就不能用 xda 上那些 ARM 的包🤣
    HangoX
        2
    HangoX  
       5 天前
    这个挺好的,会更流畅吗?官方那个有点卡
    rainbowmolly
        3
    rainbowmolly  
       4 天前
    有什么模拟器兼顾开发调试和游戏嘛
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2562 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 09:57 · PVG 17:57 · LAX 02:57 · JFK 05:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.