测试硬件环境:
打开了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。
一些命令行操作如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
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相关的库时,会遇到如下的错误。
1 2 3 4 5 6 |
[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相关的软件库,再建立软连接。
1 2 3 4 5 6 7 8 9 10 11 |
# 如果在/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 |
参考资料:
https://developer.android.com/training/graphics/opengl/index.html
http://stackoverflow.com/questions/11332817/failed-to-load-libgl-so-in-android