不知道有多少Android开发着对Android虚拟机的那悲剧的性能有意见,反正个人见解是:那速度实在是太坑爹了!linux
为何Android虚拟机比iOS和WP7的虚拟机要慢不少呢?缘由以下:android
1. Android 模拟器模拟的是 ARM 的体系结构(arm-eabi),而 iOS 和 WP7 的模拟器的目标体系结构都是 x86 的,另外 iOS 的模拟器中运行的 App 也是编译为 x86 的。这样一来 Android 模拟器须要作一些额外的二进制翻译工做。
2. Android 模拟器用的是 QEMU 的全系统模式(full system),也就说它模拟时须要启动整个 GUEST 系统,初始化各类模拟设备。相反的,iOS 和 WP7 的模拟器只是 user-mode 的模拟。
3. 在 Android 模拟器之中还须要跑一个 Dalvik VM,用以执行 Android 应用的 bytecodes。网络
综上所述,慢的一个主要缘由就是虚拟机不是跑在x86上而是模拟的ARM,有没有办法弄个x86的Android呢?eclipse
答案是固然有———开源项目Android-x86,这个牛B的开源项目将Android移植到了x86平台,系统运行的时候再也不须要模拟成ARM,这样就能直接将Android装在PC或虚拟机上流畅的运行了。
1.下载Android-x86系统镜像文件编辑器
首先到http://www.android-x86.org/download下载android-x86-2.2-generic.iso,镜像文件大约85MBide
2.在VMware上建立虚拟机工具
过程~照着这样作就行,我也不全懂——我是小白(里面长的英语就不拼了,我也懒从这里开始,选择最后一项
选择第一项(建立磁盘分区)
进入这个界面,选择“NEW”
选择“Primary(主分区)”
点选“Bootable”
以后点选“Write”,在出现的“(yes or no)”提示后输入yes,回车
完成后点“Quit”进入以下界面
回车以后 分区格式(玩linux的都知道),这里我选了ext3
接下来一路选“Yes”(就这样作吧,有一个说是须要更大空间神马的,能玩虚拟机的电脑怎么说也不在意那么点空间吧)
到这里停~~建立SD卡
在这里我小囧了下:以前本小白建立SD卡无视后面的(max 2047),结果···
安装结束后,重启进入Android这里,第二项比第一项的分辨率高,其余没啥区别貌似;第三项没试过···
启动界面
键盘锁,乃懂得
“桌面”
先把语言改为母语吧:解锁后点那个 四点方阵 进入菜单,Settings
找到 Language & keyboard(留意上面那个SD Card*****),Select Language,找到“中文(简体)” 倒数第二个
接着退出来,上面那个“SD Card*****”已经变成了“SD卡和手机内存”
【SD卡有时候不能自动安装,须要进入“SD卡和手机内存”选项,安装便可】
改下其余部分设置
设置里的 应用程序
把“未知来源”的勾打亮
另外,也推荐修改这个设置
显示 中,把“自动旋转屏幕”给灭了【不然在运行部分程序时得把电脑竖着放了】
上网页下个Android版的QQ~~~
正在下载
拖拽那个 任务栏(暂且这么叫吧),点击安装就好了~~
好吧,我认可把QQ正着放有点怪
post
4.自定义虚拟机分辨率性能
咱们在开发时确定须要测试不一样的分辨率,那么如何自定义Android虚拟机的分辨率呢?测试
首先咱们须要从Virtual Box的设定入手
打开cmd,进入Virtual Box的下你建立的虚拟机的目录,我建立的虚拟机叫Android-x86,个人帐户是Administrator,在我Windows XP上的路径是
C:\Documents and Settings\Administrator\VirtualBox VMs\Android-x86
注意:
1.在不一样操做系统下路径会有一些不一样,请根据操做系统的实际状况寻找,原则上都是在你当前用户的我的文件夹里
2.Android-x86是我建立的虚拟机的名称,若是你的和个人不一样,请修改成你建立的虚拟机的名称
在这里咱们须要使用VirtualBox提供的命令行工具来给你的虚拟机添加一个自定义分辨率,例如我想添加一个如今流行的手机屏幕分辨率 480x800,那么咱们输入的命令以下
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" setextradata "Android-x86" "CustomVideoMode1" "480x800x16"
上面的命令中,加粗的部分是要根据你本身电脑上的状况进行修改的,相关解释以下:
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe"
是Virtual Box命令行工具VBoxManage.exe的完整路径,请根据你电脑上安装的VirtualBox的实际路径修改
注意:若是路径中含有空格请使用双引号将整个路径包起来
Android-x86
这个是虚拟机的名称
480x800x16
这个是自定义的分辨率,请根据本身的须要修改,后面的16指的是16位颜色,请勿修改
若是你想增长更多的分辨率,请修改参数后屡次运行该命令便可
修改完毕以后,启动虚拟机,在Android的启动画面选中选项后按两次e键编辑内核启动参数,增长一个参数 vga=ask,具体流程以下
启动画面按e键
进入新画面后再按一次e键
这时进入内核参数编辑状态,增长参数 vga=ask
编辑完毕后按回车保存修改结果,这时会回到上一个页面,此时按下b键启动
此时系统会提示你按回车进入分辨率选择界面,咱们按回车继续
进入页面以后,你能够看到全部系统支持的分辨率,这时请寻找你刚才设定的分辨率,在下图中,能够找到在先前设定的 480x800的分辨率,注意其前面的16进制代码360,若是想以该分辨率启动虚拟机,咱们就输入360再回车便可
回车后Android就会按照你设定的分辨率来启动了,下图是以480x800分辨率启动的Android-x86虚拟机截图
注意:
若是你须要系统采用你指定的分辨率启动,须要在每次Android虚拟机启动的时候执行上面步骤的操做来修改内核参数启动Android
若是你想Android在启动的时候就默认进入分辨率选择画面或者默认采用你指定的分辨率启动虚拟机,那么能够参考如下步骤
1. 进入android虚拟机后按alt+F1进入命令行
2. 输入mkdir /data/fs
3. 挂载硬盘,使用下列命令
mount -t 硬盘格式 /dev/block/硬盘名称 /data/fs
硬盘格式为你虚拟机硬盘的格式,我这里是ext3 硬盘名称则是你虚拟机的
硬盘名称我这默认是sda1,表示第一个sata硬盘, linx下具体的硬盘命名规则请自行Google之
mount -t ext3 /dev/block/sda1 /data/fs
将硬盘挂在到 /data/fs文件夹上
4. vi /data/fs/grub/menu.list 编辑启动菜单列表 (vi这个命令行编辑器怎么用请自行Google之)
5. 和刚才启动时同样,在第一个kernel那一行的末尾增长 vga=ask 后保存
6. 重启虚拟机,这时候你就会发现每次Android启动的时候就会询问分辨率了
5.使用eclipse ADT在虚拟机上远程调试开发
如今虚拟机已经配置完成,下面来说解如何使用eclipse来在上面运行和调试Android应用程序
在前面设定虚拟机的时候我把虚拟机的网卡设置成了bridged adapter,这样虚拟机在局域网中至关于一台独立电脑,你能够给它设置一个ip或者讲其网卡设置为dhcp状态来自动获取ip,我下面只讲解一下在dhcp状态下如何查看android虚拟机ip的方法:
进入android虚拟机,按alt+F1进入命令,输入netcfg命令来查看网络状态,参考界面以下
其中eth0就是当前的网卡,后面的ip地址就是经过dhcp得到的ip地址
弄清楚以后再按alt+F7返回图形界面
此时咱们打开eclipse,进入android开发插件的设定界面,选择ddms,勾选 Use ado host, 并在ADT host value 一栏填写虚拟机的ip地址,具体界面请参看下图
选择ok保存后,在ddms界面的device菜单上选择重启adb服务,重启后,就能看到ddms链接上虚拟机了
接下来就能和日常同样在虚拟上运行和测试你的Android程序了,enjoy~
最后总结一下这个环境的优缺点:
优势:
1.高速,相比Android SDK的虚拟机,不管是启动仍是运行,本虚拟机要快上不少不少,让你能够流畅的运行测试你的Android应用,固然,也能舒服的在电脑上体验到Android系统:)
2.能够模拟平板电脑的环境
缺点:
1.硬件支持仍是悲剧,像打电话,短信,重力感应,GPS摄像头什么的你仍是得去弄台真机器调试(不过这些东西原本就不是模拟器能作的)
另外补充一下虚拟机中主页、返回、关机、菜单对应的键盘按键
Home键 -> Win键
返回键 -> ESC键
挂机键 -> alt+F4
菜单键 -> 键盘菜单键,通常在右边win键和ctrl键中间
1.用鼠标点住某个程序的图标不放:
(在菜单中)至关于要建立桌面快捷方式
(在桌面)可移动至另外一桌面或拖入垃圾桶
2.菜单、网页中,鼠标左键至关于前进,右键后退
键盘 回车前进,ESC后退
3.关机(个人本本上可用,其余的不知道):F四、F六、End
4.长按输入框可切换输入法
5.Android设备通常会有Home,Menu和Back三个标准按钮,若是没有,就要这样模拟:
(1)按住上方状态栏的右面一下子后,会提示打开状态栏模拟按钮的功能:打开后,单击状态栏表示Home;状态栏上按鼠标键并从左向右划动表示Menu;状态栏上按鼠标键并从右向左划动表示Back。一样方法还会关闭状态栏模拟功能。
(2)单击鼠标右键也表示Back;按下键盘上的ESC键或Windows键也表示Home;按下键盘上的上下文键(通常在Alt和Ctrl中间)也表示Menu。
(3)Android里只要程序不显示就表示关闭了程序,对于有后台功能的程序,须要从“Dev Tools - Running Process”里关闭(通常不使用)。
6若是要上下滚动,能够拖动一个空白处,或使用鼠标滚轮。
7.若是要关机,按F6,这时会提示。
8.Alt-F1是切换到Linux命令行,Alt-F7是切换回图形模式。不要使用“reboot -p”关机(没有按Java程序的流程运行)。