最近在學習 react-native,在按照官方文檔的指引部署 android 本地模擬器的時候,出現了幾個坑,特此記下來。
我用的 android studio 版本是2.3,按照要求安裝完 SDK,AVD 和配置好環境變量後,準備使用命令行調用 android 的模擬器。在舊版本中,android avd
命令即可調出模擬器的控制畫面,但2.3的版本已經取消了 android avd
的指令,取而代之的是 emulator
指令。查了一下文檔,可以使用emulator -list-avds
來查看虛擬機列表,然後使用 emulator @Device_name
來打開指定模擬器,其中 Device_name
是虛擬機列表中機器的具體名稱。
Qt library not found
在運行 emulator @Device_name
的時候,彈出了這個錯誤:
[140736773272512]:ERROR:./android/qt/qt_setup.cpp:28:Qt library not found at ../emulator/lib64/qt/lib
Could not launch ‘../emulator/qemu/darwin-x86_64/qemu-system-i386’: No such file or directory
按照描述,就是 Qt 庫沒有找到。上網查了一下,這個問題也在 Google 開發者平台被提了出來,解決方法就是直接定位到 $ANDROID_HOME(android sdk的具體位置)的文件夾下的 tools 文件夾,再運行emulator @Device_name
命令。
Failed to sync vcpu reg
成功運行 emulator @Device_name
命令後,我又彈出了以下的報錯
Hax is enabled
Hax ram_size 0x60000000
HAX is working and emulator runs in fast virt mode.
Failed to sync vcpu reg
Failed to sync vcpu reg
Failed to sync vcpu reg
Failed to sync HAX vcpu contextInternal error: Initial hax sync failed
Hax 是 intel 的一個虛擬機加速技術。當然,使用這個技術的前提是要你的 CPU 是 intel 的,而我之所以會出現這個問題的原因是因為我已經有一個虛擬機在後台運行著(我的情況是我有個docker 在運行),只要把後台的虛擬機都關了,就可以成功啟動虛擬機了。
Genymotion
雖然經歷了不少波折,但起碼 android 的虛擬機還是成功啟動了。不過在解決問題的過程中,發現到一個很流行的第三方虛擬機,Genymotion 這是一個 android 的虛擬平台,主要是用來給 android 應用發布前一系列的測試做準備。它除了有友好的圖形介面外,還有完善的 cli 命令可以使用。對於我來說,最顯著的優勢就是同時解決了我上面的兩個問題,不用使用命令行開啟虛擬機,跟我的 docker 完美兼容,不會出現報錯。廢話不多說,直接上下載地址(個人版)
如以後還有關於 genymotion 的使用心得,會在這裡更新。
2017.09.05 更新
Genymotion plugin for Android Studio
在 Android Studio 裡面選擇 Preference -> Plugins -> Browse repositories,在搜索框輸入 Genymotion:
點擊 Install,重啓 Android Studio。
重啓後 Android Studio 的工具欄就會新增一個 Genymotion Device Manger 的圖標(下圖最右)
第一次點擊圖標會要求設定 Genymotion 的安裝路徑。設定成功後就會顯示當前已經創建的 Genymotion 的虛擬機
一切大功告成。Enjoy it !