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

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

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

    本来自己想写一个类似的,但是 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   ·   我们的愿景   ·   实用小工具   ·   3863 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 00:55 · PVG 08:55 · LAX 17:55 · JFK 20:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.