像 VMOS 这类能够在 Android 手机上面运行其他版本的 Android 系统,技术原理是什么?
本来自己想写一个类似的,但是 Google 半天没有找到相关技术介绍. 是不是我搜索的关键词不对?
我搜索的是: “Virtual Machine in Android”
19 条回复 • 2021-01-26 20:59:41 +08:00
1
shily 84 天前 在哪看到 “在 Android 手机上面运行其他版本的 Android 系统”?
我搜索了一下,看官网介绍,就是应用双开而已。 |
2
xiyuesaves 84 天前 @shily 人家确实是独立的系统啊,甚至可以根据需要下载不同版本的安卓系统
|
3
zarvin 84 天前 虚拟机
|
4
0A0 84 天前 via Android 类似的 app 有很多。相当于创建了一个虚拟硬件环境,然后在虚拟硬件环境里安装 Android os 。因为虚拟硬件是直接调用手机真实硬件,所以耗损会比 pc 虚拟机好很多。
|
5
sky96111 84 天前 @shily virtualxposed 那种用的才是双开,VMOS 确实运行了一个虚拟系统。原理不详,目前只有这个 APP 做到了模拟一个完整系统。但在评论区吃瓜的时候听说可能和 anbox https://anbox.io/ 的实现方式有关系
|
6
gam2046 84 天前 这玩意就是自己实现了一个中间层,相当于被模拟系统的 framework,然后隔离开系统自身的 framework 。讲原理没啥难度,写起来巨麻烦,到处都是坑。 但这个玩意,宣传里带上了微信、梦幻西游一类的第三方厂商,法律风险*大。现在是南山必胜客没搞,一必死。 |
7
rust 84 天前 @0A0
@zarvin 有没有相关技术文档可以详细了解下? |
8
Jirajine 84 天前 via Android 这个大概就是自己实现了 HAL,在一个容器里运行单独的 system image,和宿主机共享内核。文档可以看 aosp 的文档,实现可以参考 anbox
https://source.android.com/devices/architecture |
9
20015jjw 84 天前 via Android chroot ?
|
10
rust 84 天前 @Jirajine 我刚开始也以为是 Anbox,但是后来我发现它内核和宿主机都不是同一个…
|
11
Jirajine 84 天前 via Android @rust 不可能吧,内核不同的话就是虚拟化了,用户态的虚拟化无论实现难度还是性能都不太可能达到这样的效果。
|
12
marczhao 84 天前 via Android proot 容器。
|
13
rust 84 天前 @Jirajine 所以我才觉得神奇,虽然 arm64-v8a 支持硬件虚拟化,但是这得 root 权限啊.它这个都没有 root 权限就可以安装使用了.然后虚拟出来的系统还挺流畅…
|
14
Jirajine 84 天前 via Android @rust 内核应该是共享的,你看到的不一样可能是接口修改了数值。
|
15
1073850525 83 天前 还有一个叫光速虚拟机,声称比 VMOS 快
反正我是看不懂,你可以看看 |
16
yanqiyu 83 天前 @rust 虽然 uname 之类途径看到的好像是不一样的版本,但是通过在 anbox 内拿到 root 之后试图干一些对内核的特权操作(比如操纵 SELinux )会 denied,所以应该还是同一个内核,只是 hook 掉了一些调用。
|
17
cathedrel 83 天前 @rust 现在这个 VMOS 还是要给予一大堆权限才肯运行吗?
|
18
rust 81 天前 @cathedrel 是的,电话权限,储存权限,定位权限等等
|
19
yaeio 72 天前 给你个思路:Android 上可以运行 Linux,Linux 内核可以运行 Android 虚拟机 Android-linux-Android
|