java wordpress Ubuntu mysql Python linux google 开源 php nginx apache Windows 微软 HTML5 Android Firefox shell centos linux命令 程序员

Ubuntu上使用Android SDK的一些注意点

测试硬件环境:打开了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

参考资料:

https://developer.android.com/training/graphics/opengl/index.html

http://stackoverflow.com/questions/11332817/failed-to-load-libgl-so-in-android

延伸阅读

评论