用虚拟机装安卓系统(X86),和用安卓模拟器有什么区别?谁的性能更好?

72 天前
 eyeshuaji
比如用 VMware 装个安卓 X86 ,和那些雷电模拟器之类的有什么区别,哪个性能更好?
3991 次点击
所在节点    Android
16 条回复
AoEiuV020JP
72 天前
第一反应是 android studio 的 qemu 模拟器,可你居然说的是雷电模拟器,
那就没什么区别, 手游模拟器都是基于 virtualbox 虚拟安卓 x86 , 和 vmware 装的没啥区别, 要说也是 vmware 和 virtualbox 的区别,
不过手游模拟器重点在于针对手游的优化吧,各种机型模拟,按键映射之类的功能,
HojiOShi
72 天前
安卓模拟器性能优化更好。虚拟机装的滑动下界面都卡。
w568w
72 天前
那显然是手游模拟器。这些模拟器本质是经过裁剪和驱动优化的 Android x86 镜像,运行在 VirtualBox 之类的开源虚拟机内。

另外,严格意义上来说绝大部分 PC 安卓模拟器其实是「仿真器( Emulator )」,因为它完全模拟了系统的全部底层硬件设备,性能相对较低( Android Studio 里的英文翻译也是 Android Emulator )。

仅模仿系统外部行为,利用主机环境进行指令执行的才是「模拟器( Simulator )」,XCode 附带的那种就是,因为模拟器和主机共用相同的 Darwin 内核。

Linux 平台上也有一些 Android 模拟器,例如 Anbox 、Waydroid 等,但一是对 Linux 内核有要求,二是由于缺少好的显卡驱动,图形性能可能还不如经过优化的仿真器。
acess
72 天前
话说我也一直蛮好奇那些虽然免费但商业闭源的模拟器用的都是什么技术……

android studio 自带的 avd 我记得 angle gpu 翻译层有一阵子都坏了很久没修,不知道现在修了没……默认的 opengl 直通则是会出现渲染 bug ; swiftshader cpu 软件渲染则卡爆。

然后像雷电 mumu 之类貌似用的也是 angle ,但很丝滑而且渲染都正确。
acess
72 天前
(哦,google aosp 官方文档提到过,用 angle 是把 opengl es 翻译成 directx ,因为一般情况下桌面 windows 环境的显卡驱动 directx 的问题比较少)
acess
72 天前
还有一件事我感觉蛮神奇的,就是 arm 转 x86 的转译,二进制翻译。

我印象里大概十多年前试过 qemu-user-static ,开源的,好像只相当于原生十分之一的性能。

结果又是很多很多年前吧,intel 出 atom x86 手机的时候,印象里 intel 搞的转译效率亮瞎我了,有个 60-70%好像。

现在也是,好像 waydroid 是用的闭源的转译层,好像叫 houdini ,是从微软这边 wsa 子系统扒来的……貌似效率也是很高。

感觉这方面怎么网上都很少有科普,甚至转译层叫什么名字都很少有人提,也不知道为什么效率会差那么多
Kenshiro
72 天前
插个楼问下推荐的 OS ,最好能兼容 VMVare 的
eyeshuaji
72 天前
@acess #6 我记得原生安卓 X86 用的也是 houdini
flyqie
71 天前
@acess #6

你说的现在叫 ibt ,intel 家这个方案好多年了,一直在维护。

内部名字似乎一直都是 houdini ,效率好邪恶原因是,intel 自己优化,能调 native 的调 native ,调不了的才 emu ,而且 emulator 上也下了不少功夫。

这也是为什么 houdini 那么一大坨的原因。。带了一坨 native so 。
flyqie
71 天前
@w568w #3

分怎么看,linux 上的 anbox 和 waydroid 这种方案比较轻量级,各项性能因为不走 vmm 也会比 emulator 高,但问题也很突出,隔离不太方便做,需要对 aosp 做不少修改,再加上 linux desktop 的生态问题,toC 市场不太好搞。

windows 在几年前网易也做过那种类似 container 的方案,但后来似乎是因为兼容性等原因放弃了,目前还是以 mumu 这种用 vbox 做 vmm 层为主。

toB 这块的话,目前商业方案据我所知大部分都是 aic(aosp in container),真正做 vmm 的很少,因为 vmm 的虚拟化损耗和资源利用率还是挺麻烦的。
flyqie
71 天前
@acess #4

图形图像性能这边我要是没记错的话,各家一般都会在 guestos 和 vmm 这边一起搞花活,不会直接拿来就用,都要做蛮多优化的。
acess
70 天前
@flyqie 诶我印象里是用 flac 编解码这样基本就是纯计算的工作负载对比的,好像不涉及太多系统/外部调用之类……
acess
70 天前
@flyqie (哦坏了,我可能有点记错抱歉……houdini 效率高的印象也不是我自己跑出来的,只是看网上的评测文章,这样就不太能说明问题了)
acess
70 天前
https://www.igao7.com/news/201406/x86.html

搜到了这篇,里面有使用原生 x86 和 armv7 转译的跑分对比,这一篇里测出来貌似损耗就很大了,只剩三分之一了
flyqie
70 天前
@acess #14

文章太老了呀,aosp 跟 intel 都在发展,并且如果要是大量跑到 emu 而不是 call native lib 的话确实性能不太好,没办法。
flyqie
70 天前
@flyqie #15

不过也得分跟谁比了,拼原生肯定干不过,不过 intel 在这个方案上也比其他的有优势。

这是 intel 这边的产品介绍,几年前有相关人士在知乎回答过说是国内这边做的,前几个月我发邮件咨询商务也确实能看出来是中国人名字。

https://www.intel.cn/content/www/cn/zh/developer/topic-technology/bridge-technology.html

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

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

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

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

© 2021 V2EX