Linux中國

Genymotion vs Android 模擬器

一直以來有關於選擇 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,這是一個在 virtual box 中運行的 Android 虛擬機。與在 qemu 上運行的普通老式 android 模擬器相比,它相當穩定和快速。

我們來看看今天的情況。

我在持續集成的基礎設施上和我的開發機器上使用 Genymotion。我手頭的任務是擺脫持續集成基礎設施和開發機器上使用 Genymotion。

  • 你問為什麼?
  • 授權費錢。

在快速看了一下以後,這似乎是一個愚蠢的舉動,因為 Android 模擬器的速度很慢而且有 bug,它們看起來適得其反,但是當你深入的時候,你會發現 Android 模擬器是優越的。

我們的情況是對它們進行集成測試(主要是 espresso)。我們的應用程序中只有 1100 多個測試,Genymotion 需要大約 23 分鐘才能運行所有測試。

在 Genymotion 中我們面臨的另一些問題是:

  • 有限的命令行工具(GMTool)。
  • 由於內存問題,它們需要定期重新啟動。這是一個手動任務,想像在配有許多機器的持續集成基礎設施上進行這些會怎樣。

進入 Android 模擬器

首先是嘗試在它給你這麼多的選擇中設置一個,這會讓你會覺得你在賽百味餐廳一樣。最大的問題是 x86 或 x86_64 以及是否有 Google API。

我用這些組合做了一些研究和基準測試,這是我們所想到的。

鼓聲……

  • 比賽的獲勝者是帶 Google API 的 x86
  • 但是如何勝利的?為什麼?

嗯,我會告訴你每一個問題。

x86_64 比 x86 慢

  • 你問慢多少。
  • 28.2% 多!!!

使用 Google API 的模擬器更加穩定,沒有它們容易崩潰。

這使我們得出結論:最好的是帶 Google API 的x86。

在我們拋棄 Genymotion 開始使用模擬器之前。有下面幾點重要的細節。

  • 我使用的是帶 Google API 的 Nexus 5 鏡像。
  • 我注意到,給模擬器較少的內存會造成了很多 Google API 崩潰。所以為模擬器設定了 3GB 的 RAM。
  • 模擬器有四核。
  • HAXM 安裝在主機上。

基準測試的時候到了

Genymotion and Android Emulator Espresso Benchmark

Linpack

Geekbench 4

從基準測試上你可以看到除了 Geekbench4,Android 模擬器都擊敗了 Genymotion,我感覺更像是virtual box 擊敗了 qemu。

歡呼模擬器之王

我們現在有更快的測試執行時間、更好的命令行工具。最新的 Android 模擬器創下的新的記錄。更快的啟動時間之類。

Goolgle 一直努力讓

Android 模擬器變得更好

如果你沒有在使用 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 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國