正確設定 Android Emulator 的硬體加速

之前寫過〈開啟 Android Emulator 的 GPU 硬體加速〉,但是偶爾還是會聽到社群朋友在抱怨 Android 本家提供的模擬器很慢,而去用其他一些第三方提供的加速模擬器,覺得很奇怪。

我對 Android 模擬器「夠快」的標準是,非高度要求「即時反應」(如遊戲、影音)、「一般」的 app 能夠跑得順,就算夠快了,而我自己設定正確的本家模擬器,是合格的。

Android 本家模擬器的硬體加速手段,其實可粗分成兩種:

  1. 使用 Intel x86 Atom System Image,那麼就可善用 CPU 的 虛擬化技術(如 Intel 的 VT)和 KVM 來使用電腦上的同質性硬體 (x86 <-> x86),大幅減少指令轉譯的成本,達成效能最佳化。
  2. 使用 Host GPU (即電腦上的顯示晶片)來加速圖形繪製,這個手法即使是使用非 Intel x86 Atom System Image 亦能受益。

所以,滿足手段 1 與 2 者能得到最好的效果;如果手段 1 很不幸地受限無法運作,至少手段 2 可以讓視覺感受上不會太過「卡頓」。

而今天我再度碰到同樣龜速的問題,發現 emulator 輸出錯誤訊息如下:

emulator: ERROR: Could not load OpenGLES emulation library: lib64OpenglRender.so: cannot open shared object file: No such file or directory
emulator: WARNING: Could not initialize OpenglES emulation, using software renderer.

原來是我將 Android SDK 的路徑改了,卻忘了更新 /etc/ld.so.conf.d/ 底下的設定檔,將 $SDK_PATH/tools/lib/ 改正後,就能回復使用手段 2。至於手段 1 如果硬體有支援、核心模組(如我使用的 kvm-intel)有正常啟動,本來就能正常運用。兩者搭配起來,不誇張,就像用實機一樣。但是我也實話實說,這些要安裝的軟體套件、要設定的東西頗多、頗雜,免不了小小折騰一下。

CC BY-SA 4.0 This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Leave a Reply

Your email address will not be published. Required fields are marked *