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 安裝在主機上。
基準測試的時候到了
從基準測試上你可以看到除了 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
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive