測試硬體環境:
開啟了Intel VT的PC (使用KVM時需要VT支援的)
測試軟體環境:
Ubuntu 12.04 x86_64
ADT Bundle Linux x86_64 (在android官網下載:https://developer.android.com/sdk/index.html )
1. 下載所需的Image和建立AVD:
可以在Eclipse(ADT)中,”Window” -> “Andorid SDK Manager”來開啟SDK管理器進行下載,需要下載相應版本(如Android 4.2.2/4.3)的SDK Platform及其對應的ARM或Intel x86 Atom的系統鏡像(如果要在Intel PC上使用Emulator並且要使用KVM加速,則一定需要下載Intel x86 Atom的系統鏡像)。另外,由於SDK Manager是預設到google.com的一些網站下載相關的資訊,如果發現有串連不上的情況(原因你懂的),可以通過”Tools”->”Options”中設定你自己的代理。
在Eclipse-ADT中,”Window” -> “Andorid Virtual Device Manager” 來開啟AVD管理器,在上面可以建立自己的AVD檔案,注意:如果要在Intel平台上使用KVM加速,則建立AVD時,對CPU/ABI的選擇是 “Intel Atom (x86)”。
另外,如果使用一些程式時,其定義的API沒有找到,就需要自己下載了;比如,當前有Android API 18 SDK,可能某個程式需要API 17,就需要下載Android 17的SDK了。
2. KVM加速:
我們都知道,運行Android Emulator時很慢的,有時慢到難以忍受。
如果在Android Emulaor中使用了KVM,則可以實現啟動和運行時程式的加速,效果可能提高5~10倍的執行速度;記得用x86那種AVD。
一些命令列操作如下:
| 代碼如下 |
複製代碼 |
jay@jay-linux:~$ sudo modprobe kvm jay@jay-linux:~$ sudo modprobe kvm_intel jay@jay-linux:~$ lsmod | grep kvm kvm_intel 137721 0 kvm 415550 1 kvm_intel jay@jay-linux:~$ ps -ef | grep emulator | grep -v grep jay 11749 10704 14 19:48 pts/18 00:02:18 /home/jay/adt-bundle-linux-x86_64-20130917/sdk//tools/emulator64-x86 -avd Android-4.2-x86 -scale 0.23 jay@jay-linux:~$ lsmod | grep kvm kvm_intel 137721 3 kvm 415550 1 kvm_intel # 可看使用Emualtor後,kvm_intel模組已經有3個引用了。 |
3. OpenGL ES:
如果有OpenGL ES的支援,則可以在Emulator中有更好的影像處理能力,比如:可以運行一些3D的程式。
當本機缺少或ADT沒找到OpenGL相關的庫時,會遇到如下的錯誤。
| 代碼如下 |
複製代碼 |
[2013-10-10 18:34:19 - App2] Launching a new emulator with Virtual Device 'Android-4.2-x86' [2013-10-10 18:34:26 - Emulator] Failed to load libGL.so [2013-10-10 18:34:26 - Emulator] error libGL.so: cannot open shared object file: No such file or directory [2013-10-10 18:34:26 - Emulator] Failed to load libGL.so [2013-10-10 18:34:26 - Emulator] error libGL.so: cannot open shared object file: No such file or directory [2013-10-10 18:34:26 - Emulator] emulator: emulator window was out of view and was recentered |
解決方案也很簡單,一般來說都是有了庫的,只是需要添加一個軟串連而已;有時,庫也缺少,那麼就需要先安裝GL相關的軟體庫,再建立軟串連。
| 代碼如下 |
複製代碼 |
# 如果在/usr/lib下找不到libGL相關的東西,可以用 sudo apt-get install libgl1-mesa-glx 來安裝相應的軟體庫。 jay@jay-linux:~$ ll /usr/lib/x86_64-linux-gnu/mesa/ total 428 drwxr-xr-x 2 root root 4096 Sep 3 17:56 ./ drwxr-xr-x 54 root root 36864 Oct 10 15:07 ../ -rw-r--r-- 1 root root 31 Jun 19 04:54 ld.so.conf lrwxrwxrwx 1 root root 12 Jun 19 04:54 libGL.so.1 -> libGL.so.1.2 -rw-r--r-- 1 root root 390352 Jun 19 04:55 libGL.so.1.2 # 可以看到剛好沒有libGL.so,就在 /usr/lib/x86_64-linux-gnu/mesa/ 目錄下,建立一個指向libGL.so.1.2的軟串連libGL.so即可 # 如果沒有root許可權,則可以在SDK的lib目錄中建立軟串連亦可,如下所示: jay@jay-linux:~$ ln -s /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2 /home/jay/adt-bundle-linux-x86_64-20130917/sdk/tools/lib/libGL.so |