6.4 KiB
Genymotion vs Android 模拟器
Android 模拟器是否有足够的改善来取代 Genymotion
一直以来一直有关于选择 android 模拟器或者 Genymotion 的争论,我看到很多讨论最后赞成 Genymotion。 我根据我周围最常见的情况收集了一些数据, 基于此, 我将连同 Genymotion 评估所有的 android 模拟器。
最后结论:配置正确时,Android 模拟器比 Genymotion 快。 使用带 Google API 的 x86(32位)镜像、3GB RAM、四核CPU。
哈,很高兴我们跳过了 现在,让我们深入
免责声明:我已经测试了我的看到的一般情况,即运行测试。所有的基准测试都是在 2015 年中期的 MacBook Pro 上完成的。 无论何时我说 Genymotion 指的都是 Genymotion Desktop。他们还有其他产品,如 Genymotion on Cloud&Genymotion on Demand,这里没有考虑。 我不是说 Genymotion 是不合适的,但运行测试比某些 Android 模拟器慢。
关于这个问题的一点背景,然后我们将跳到好的东西上。
过去:我有一些基准测试,继续下去。
很久以前,Android 模拟器是唯一的选择。但是它们太慢了,这是架构改变的原因。 在 x86 机器上运行的 ARM 模拟器可以期待什么?每个指令都必须从 ARM 转换为 x86 架构,这使得它的速度非常慢。
随之而来的是 Android 的 x86 镜像,随着它们摆脱了 ARM 到 x86 平台转化,速度更快了。 现在,你可以在 x86 机器上运行 x86 Android 模拟器。
问题解决了!!!
没有!
Android 模拟器仍然比人们想要的慢。 随后出现了 Genymotion,这是一个在虚拟机中运行的 Android 虚拟机。但是,与在 qemu 上运行的普通老式 android 模拟器相比,它相当稳定和快速。
我们来看看今天的情况。
我的团队在 CI 基础架构和开发机器上使用 Genymotion。手头的任务是摆脱 CI 基础设施和开发机器中使用的所有 Genymotion。
你问为什么? 授权费钱。
在快速看了一下以后,这似乎是一个愚蠢的举动,因为 Android 模拟器的速度很慢而且有 bug,但它们看起来适得其反,但是当你深入的时候,你会发现 Android 模拟器是优越的。
我们的情况是对它们进行集成测试(主要是 espresso)。 我们的应用程序中只有 1100 多个测试,Genymotion 需要大约 23 分钟才能运行所有测试。
在 Genymotion 中我们面临的另一些问题是:
-
有限的命令行工具(GMTool)。
-
由于内存问题,它们需要定期重新启动。这是一个手动任务,想象在配有许多机器的 CI 基础设施上进行这些会怎样。
进入 Android 模拟器
第一次尝试设置其中的一个,它给你这么多的选择,你会觉得你在 Subway 餐厅。 最大的问题是 x86 或 x86_64 以及是否有 Google API。
我用这些组合做了一些研究和基准测试,这是我们想出来的。
鼓声。。。
比赛的获胜者是带 Google API 的 x86 但是如何?为什么?
嗯,我会告诉你每一个的问题。
x86_64 比 x86 慢
你问慢多少.
28.2% 多!!!
使用 Google API 的模拟器更加稳定,没有它们容易崩溃。
这使我们得出结论:最好的是带 Google API 的x86。
在我们抛弃 Genymotion 开始使用模拟器之前。有下面几点重要的细节。
-
我使用的是带 Google API 的 Nexus 5 镜像。
-
我注意到,给模拟器较少的 RAM 会造成了很多 Google API 崩溃。所以为模拟器设定了 3GB 的 RAM
-
模拟器有四核
-
HAXM 安装在主机上。
基准测试的时候到了
从基准测试上你可以看到除了 Geekbench4,Android 模拟器都击败了 Genymotion,Geekbench4 我感觉更像是虚拟机击败 qemu。
欢呼模拟器之王
We are now having a faster test execution time, better command line tools. Also with the latest Android Emulator, things have gone a notch up. Faster boot time and what not. 我们现在有更快的测试执行时间、更好的命令行工具。最新的 Android Emulator 创下的新的记录。更快的启动时间之类。
Goolgle 一直努力让
Android Emulator 变得更好
如果你没有在使用 android 模拟器。我建议你重新试下来节省一些钱。
我尝试的另一个但是没有成功的方案是在 AWS 上运行 Android-x86 镜像。 我能够在 vSphere ESXi Hypervisor 中运行它,但不能在 AWS 或任何其他云平台上运行它。如果有人知道原因,请在下面评论。
PS:VMWare 现在可以在 AWS 上使用,在 AWS 上使用 Android-x86 毕竟是有可能的。
作者简介:
嗨,我的名字是 Sumit Gupta。我是来自印度古尔冈的软件/应用/网页开发人员。 我做这个是因为我喜欢技术,并且一直迷恋它。我已经工作了 3 年以上,但我还是有很多要学习。他们不是说如果你有只是,让别人点亮他们的蜡烛。
当在编译时,我阅读很多文章,或者听音乐。
如果你想联系,下面是我的社交信息和 email。
via: https://www.plightofbyte.com/android/2017/09/03/genymotion-vs-android-emulator/
作者:Sumit Gupta 译者:geekpi 校对:校对者ID