配置一个好用的Android模拟器让你不再对模拟器那么失望

默认情况下的Android模拟器就是下面的这个样子
看到这个屏幕截图最显眼的问题显然它的丑陋的界面。模拟器窗口占据了屏幕巨大的空间,而且毫无缘由的放着一个屏幕键盘。

如果你没亲自用过模拟器的话,还有一个不易发现的问题:几乎是慢到不能用!为了拍上面的图花了5分钟才把模拟器启动起来,而且几乎对输入事件没响应。有3个原因可以解释这个问题:

 
1.非本地化的。默认使用ARM架构的模拟器,尽管将指令转化成x86的也是可行的,但这个转换过程是非常慢的。
2.非加速的。即使你选择了x86,虚拟硬件加速也不会自动可用。
3. 软绘图。默认情况下GPU加速也不能使用,这导致模拟器更慢了。

下面是解决这些问题的一些办法,让你不再对模拟器那么失望
1. 给你的电脑安装Intel Hardware Accelerated Execution Manager, 在Android SDK以下位置可以找到: extras/intel/Hardware_Accelerated_Execution_Manager.
2. 启动Android Virtual Device Manager
$ android avd
3. 点击New配置以下信息:
•Target: Android 4.1 – API Level 16.
•CPU/ABI: Intel Atom (x86).
•SD Card: Size 512 MiB.
•Skin:对于手机大小的模拟器,我一般设置为320 x528. 对于平板大小的,我用1024 x 648的,竖直方向上我会加上48像素,以留出在屏幕上导航控制的空间。
•Hardware:
Change these defaults:
Abstract LCD density 160
•点击New… 设置以下选项:
Hardware Back/Home keys: no
Keyboard Support: yes
SD Card Support: yes
GPU emulation: yes
注意:添加配置完这些硬件选项后,在列表中再选一行以确认新选项已经自动保存了。欢迎看UI设计的hanging chad 理论。
4.点击 Create AVD,但不要立即 start。
5. 由于x86镜像不包含任何Google APIs,我知道这是个很糟糕的理由,所以我们要手动添加它们。如果你不需要Google Maps APIs的话,可以不用添加。

这些步骤是基于这篇博客this blog post.上的文章的
a.你需要拷贝一份Google Maps文件,最省事的方式是创建一个以”Google APIs(Google Ins.)-API Level 10” 为目标的模拟器,然后再把它们都干掉。
你也可以从http://goo.im/gapps下载那些文件。
b. 模拟器/system区默认有0个字节,尽管AVD管理器有个选项能改这个值,但事实上是没效果的。为了解决这个问题,可以退出AVD管理器,然后从终端启动AVD,指定一个大一点的区域。
$ emulator -partition-size 512 @AVD_NAME
(用一个合适的名字换掉 AVD-NAME)
c.把Google API文件加到你的虚拟设备中:
$ adb remount
$ adb push com.google.android.maps.xml /system/etc/permissions
$ adb push com.google.android.maps.jar /system/framework
d.我们接下来就做一个新的系统镜像,这样就不用每次启动AVD时重新配置一遍了。下载
mkfs.yaffs2.x86 然后加到你的设备里。
$ adb push mkfs.yaffs2.x86 /data
e.创建新的系统镜像。
$ adb shell chmod 755 /data/mkfs.yaffs2.x86
$ adb shell /data/mkfs.yaffs2.x86 /system /data/system.img
f.把新的镜像提取出来:
$ adb pull /data/system.img
这个花一段时间才能弄好。现在正好趁这个时候可以喝两杯了。
g..把新镜像system.img 放到你的AVD目录下。在这里~/.android/avd/AVD_NAME.avd.
$ cp system.img ~/.android/avd/AVD_NAME.avd/
h.正常启动你的AVD
6.恭喜你,你拥有了一个可用的Android 模拟器了


不幸的是,这可能意味着你就要开发Android上的应用了。祝你好运吧。
最近许多令人激动的提升模拟器性能的工作已经开始了,尤其在x86镜像,硬件虚拟和GPU加速上。不幸的是不仅这些特性没有默认包含在内,而且AVD管理器也没有征兆表明会有更好的性能。这让许多开发者无法接受这种糟糕的体验。

在Android SDK Git 仓库闲逛时,我注意到许多针对AVD 管理器的大的改动都在进行中,所以有希望将来这种状况会改变,到那时,希望你能记得记得这篇文章的好。

(0)

相关推荐

  • 二个android模拟器互发短信程序演示

    一.创建 Android工程 Project name:SendMessage BuildTarget:Android2.2 Application name:发送短信 Package name:com.sms.Activity Create Activity:SendMessage Min SDK Version:8 二.编辑工程 1.编辑字符串strings.xml文件内容为: 复制代码 代码如下: <?xml version="1.0" encoding="utf

  • 在Android模拟器上模拟GPS功能总是null的解决方法

    我们都知道,在我们开发时需要在模拟器上模拟GPS,可在Location的时候总是null,上网查了一下,发现如下解决: 网上大侠的解决方案: 在模拟器上获取GPS信息时,使用Location loc = LocationManager.getLastKnownLocation("gps");来获取location信息,但是往往在调试中loc是null的,因为首先需要在模拟器中手动添加GPS信息,有两种手动添加方法 1.在eclipse下,windows-->open perspe

  • Intel HAXM为Android 模拟器加速解决模拟器运行慢的问题

    Android 模拟器一直以运行速度慢著称, 本文介绍使用 Intel HAXM 技术为 Android 模拟器加速, 使模拟器运行度媲美真机, 彻底解决模拟器运行慢的问题. Intel HAXM (Hardware Accelerated Execution Manager) 使用基于 Intel(R) Virtualization Technology (VT) 的硬件加速, 因此需要 CPU 支持 VT , 而且仅限于 Intel CPU, 与 AMD CPU 无缘, Intel HAXM

  • 使用adb命令向Android模拟器中导入通讯录联系人的方法

    本文实例讲述了使用adb命令向Android模拟器中导入通讯录联系人的方法.分享给大家供大家参考.具体实现方法如下: 使用adb提供的命令, 可以非常方便地从PC中将通讯录导入android模拟器中. 首先要先准备好固定格式的contacts.vcf文件, 该文件即android中的通讯录存储文件. 格式如下: 复制代码 代码如下: BEGIN:VCARD  VERSION:3.0  N:15200000000;;;;  TEL;TYPE=cell:15200000000  END:VCARD 

  • Android模拟器中窗口截图存成文件实现思路及代码

    Android模拟器内容是用OpenGL渲染的,所以用一般的编程截图(如PrintWindow()等)会是黑屏.这是因为画的东西放在framebuffer里. 一种方法是通过adb把guest的framebuffer数据/dev/graphics/fb0倒到host,再转为图片.但这样速度比较慢. 好在Android模拟器中把guest的framebuffer传到host进行显示,所以在host端只要将framebuffer输出到文件即可. 首先定义每次framebuffer更新时的回调函数:

  • WAC启动Android模拟器 transfer error: Read-only file system错误解决方法

    这两天在用WAC SDK开发Widget时,在启动Android模拟器时Eclipse的Consle出现如下错误: 复制代码 代码如下: [2011-11-27 22:08:49 - ddms]transfer error: Read-only file system 然后Widget无法安装和执行!在参考了官方论坛上的相同问题的一个帖子后,也没有实质的解决办法(主要是楼主不厚道,解决了也不说明如何解决).另外,根据管理员的提示,发现也无法解决问题,相应的两个帖子的地址如下: 开发人员的提问:h

  • Android启动模拟器报错解决方法

    Android模拟器报"Failed To Allocate memory 8"错误的解决办法 Android在启动模拟器AVD时,出现下面的异常:"Failed to allocate memory: 8",怎么办? 此错误是我们在允许AVD时,选择了默认的AVD插件所致. 解决方法:减少分配的内存大小.修改AVD的配置文件,将选项"hw.ramSize=1024"从1024改为256.如图所示:

  • Android开发应用第一步 安装及配置模拟器Genymotion

    一.安装及配置Genymotion (1)由于Eclipse中自带的SDK模拟器,启动之慢,不说了 现在给大家介绍一种比较快的模拟器Genymotion (2)首先去Genymotion的官网注册一个账号,这个账号是有用的 请记着你的账号和密码(我用的是QQ好注册的) 网址是:https://www.genymotion.com/ (3)填好信息之后 点击 Creat account 即可注册  然后到你的邮箱激活 就好了! (4)下载之后直接点击安装就好了!安装过程不再细讲!只要默认的就好了!

  • Android模拟器对应的电脑快捷键说明

    Home键(小房子键) 在键盘上映射的就是home键,这倒是很好记. Menu键 用于打开菜单的按键,在键盘上映射的是F2键,PgUp键同样可以.另外,看英文原文的意思,貌似这个键在某些机型上会被设计为左软件(left softkey) Start键 这个键在模拟器和G1真机上我都没有找到到底是哪个键.映射的是Shift+F2或PgDn,某些机型会被设计为右软键(right softkey). Back键 返回键,用户返回上一个UI或者退出当前程序.键盘上映射ESC键. Call/Dial键(电

  • Android 模拟器(emulator-5554...)出现错误解决办法

    Android 模拟器 出现错误解决办法: 1.Unable to get view server version from device exlipse下编写好android应用程序时候,右键项目 run as android application 弹出一对话框说出现问题 点击详细说 空指针异常.打开ddms模式, 里面提示 Unable to get view server version from device emulator-5554 ,此时我的android模拟器是运行着的. 解决

  • android模拟器开发和测试nfc应用实例详解

    从Android2.3开始支持NFC.不过NFC应用只能在Android手机(或平板电脑)上测试和开发,而且Android手机还必须有NFC芯 片.而且如果测试NFC传输文件时至少需要两部支持NFC的手机.当然,如果测试读写NFC标签,还需要一些NFC标签或帖子.而且NFC在模拟器上时不能运行的.所以从这一点来说,NFC开发需要更多的设备,比较麻烦.这也蓝牙.传感器是一样的.都不能在Android模拟器上开发和测试.真不知道Google为什么不解决这一问题. 不过这种问题也不是不能解决,而且并不

随机推荐