像 VMOS 这类能够在 Android 手机上面运行其他版本的 Android 系统,技术原理是什么? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rust
V2EX    Android

像 VMOS 这类能够在 Android 手机上面运行其他版本的 Android 系统,技术原理是什么?

  •  
  •   rust 2021-01-15 13:19:03 +08:00 17084 次点击
    这是一个创建于 1731 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本来自己想写一个类似的,但是 Google 半天没有找到相关技术介绍. 是不是我搜索的关键词不对?

    我搜索的是: "Virtual Machine in Android"

    21 条回复    2022-10-17 19:44:01 +08:00
    shily
        1
    shily  
       2021-01-15 13:57:29 +08:00
    在哪看到 “在 Android 手机上面运行其他版本的 Android 系统”?
    我搜索了一下,看官网介绍,就是应用双开而已。
    xiyuesaves
        2
    xiyuesaves  
       2021-01-15 14:04:58 +08:00
    @shily 人家确实是独立的系统啊,甚至可以根据需要下载不同版本的安卓系统
    zarvin
        3
    zarvin  
       2021-01-15 14:08:33 +08:00
    虚拟机
    0A0
        4
    0A0  
       2021-01-15 14:09:37 +08:00 via Android
    类似的 app 有很多。相当于创建了一个虚拟硬件环境,然后在虚拟硬件环境里安装 Android os 。因为虚拟硬件是直接调用手机真实硬件,所以耗损会比 pc 虚拟机好很多。
    sky96111
        5
    sky96111  
       2021-01-15 14:12:10 +08:00
    @shily virtualxposed 那种用的才是双开,VMOS 确实运行了一个虚拟系统。原理不详,目前只有这个 APP 做到了模拟一个完整系统。但在评论区吃瓜的时候听说可能和 anbox https://anbox.io/ 的实现方式有关系
    gam2046
        6
    gam2046  
       2021-01-15 14:23:28 +08:00
    这玩意就是自己实现了一个中间层,相当于被模拟系统的 framework,然后隔离开系统自身的 framework 。讲原理没啥难度,写起来巨麻烦,到处都是坑。

    但这个玩意,宣传里带上了微信、梦幻西游一类的第三方厂商,法律风险极大。现在是南山必胜客没搞,一必死。
    rust
        7
    rust  
    OP
       2021-01-15 14:24:09 +08:00
    @0A0
    @zarvin
    有没有相关技术文档可以细了解下?
    Jirajine
        8
    Jirajine  
       2021-01-15 14:36:45 +08:00 via Android
    这个大概就是自己实现了 HAL,在一个容器里运行单独的 system image,和宿主机共享内核。文档可以看 aosp 的文档,实现可以参考 anbox
    https://source.android.com/devices/architecture
    20015jjw
        9
    20015jjw  
       2021-01-15 14:41:45 +08:00 via Android
    chroot ?
    rust
        10
    rust  
    OP
       2021-01-15 14:48:41 +08:00
    @Jirajine 我刚开始也以为是 Anbox,但是后来我发现它内核和宿主机都不是同一个...
    Jirajine
        11
    Jirajine  
       2021-01-15 15:28:10 +08:00 via Android
    @rust 不可能吧,内核不同的话就是虚拟化了,用户态的虚拟化无论实现难度还是性能都不太可能达到这样的效果。
    marczhao
        12
    marczhao  
       2021-01-15 15:37:24 +08:00 via Android
    proot 容器。
    rust
        13
    rust  
    OP
       2021-01-15 15:42:25 +08:00
    @Jirajine 所以我才觉得神奇,虽然 arm64-v8a 支持硬件虚拟化,但是这得 root 权限啊.它这个都没有 root 权限就可以安装使用了.然后虚拟出来的系统还挺流畅...
    Jirajine
        14
    Jirajine  
       2021-01-15 16:17:16 +08:00 via Android
    @rust 内核应该是共享的,你看到的不一样可能是接口修改了数值。
    1073850525
        15
    1073850525  
       2021-01-15 16:59:11 +08:00
    还有一个叫光速虚拟机,声称比 VMOS 快,它在自己的博客上谢了一篇文章《安卓实现安卓-光速虚拟机技术内幕》
    https://gsxnj.cn/vphonegaga_blog/archives/2020/07/15/dingding/454
    反正我是看不懂,你可以看看
    yanqiyu
        16
    yanqiyu  
       2021-01-15 17:20:19 +08:00
    @rust 虽然 uname 之类途径看到的好像是不一样的版本,但是通过在 anbox 内拿到 root 之后试图干一些对内核的特权操作(比如操纵 SELinux )会 denied,所以应该还是同一个内核,只是 hook 掉了一些调用。
    cathedrel
        17
    cathedrel  
       2021-01-15 17:40:24 +08:00
    @rust 现在这个 VMOS 还是要给予一大堆权限才肯运行吗?
    rust
        18
    rust  
    OP
       2021-01-18 11:55:53 +08:00
    @cathedrel 是的,电话权限,储存权限,定位权限等等
    yaeio
        19
    yaeio  
       2021-01-26 20:59:41 +08:00
    给你个思路:Android 上可以运行 Linux,Linux 内核可以运行 Android 虚拟机 Android-linux-Android
    ChangHaoWei
        20
    ChangHaoWei  
       2022-10-17 17:18:16 +08:00
    root 才能的硬件虚拟化相当于是 虚拟机如 vmware workstation
    vmmos 实现的虚拟是比应用多开更多系统交互的虚拟 类似于 docker

    实现的细节看那个技术博文真香
    ChangHaoWei
        21
    ChangHaoWei  
       2022-10-17 19:44:01 +08:00
    晚来的回答。你的问题更像是这个关键词 SandBox

    https://source.android.com/docs/security/app-sandbox
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2810 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 21ms UTC 13:22 PVG 21:22 LAX 06:22 JFK 09:22
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86