我在x86 Windows XP Professional机器上有2.67 GHz赛扬处理器和1.21 GB RAM。

我的理解是,Android Emulator应该在这样的机器上启动得相当快,但对我来说,它没有。我遵循了设置IDE、SDK、JDK等的所有说明,并在快速启动仿真器方面取得了一些成功,但这非常罕见。如果可能的话,我如何解决这个问题?

即使它启动并加载主屏幕,它也非常缓慢。我已经在3.5版(伽利略)和3.4版(木卫三)中尝试过Eclipse IDE。


当前回答

我注意到,如果没有连接Dalvik调试监控服务器(DDMS),仿真器启动速度会快得多。因此,如果您从Virtual Device Manager“SDK Setup.exe”启动仿真器,而Eclipse未启动,则仿真器的工作速度更快。

如果您从Eclipse:DDMS启动模拟器,那么有时模拟器非常慢,但有时速度更快。

其他回答

我只是使用了默认的Android 3.1,速度很慢,但当我意识到我的代码与Android 2.3.3兼容时,我就改用了它。它大约快50%,而且模拟器看起来更像我的手机,并且有一个永久显示的键盘,这样更容易使用。

通过转到windows-->首选项-->常规-->启动和关闭,删除启动时某些插件的不必要激活。还要确保您在任何视图中都不使用这些插件

Eclipse不是文字处理器。最好禁用拼写检查。禁用拼写检查将通过转到Windows-->首选项-->常规-->编辑器-->文本编辑器-->拼写检查来减轻eclipse负担

当eclipse构建项目时,它将删除所有输出文件夹并重建其他编译器构建的类。我们可以禁用这些功能,因为删除输出文件夹和重建需要一些时间。转到Windows-->首选项-->Java-->编译器-->构建

禁用标签装饰(对你来说用处不大)也会帮助你获得一些性能。转到Windows-->首选项-->常规-->外观-->标签装饰

关闭不需要的项目并使用工作集选项从一组项目平滑地移动到另一组项目。

如果您不需要,也可以禁用Eclipse自动构建。转到项目-->自动生成(取消选中)

不要在编辑器中打开许多选项卡。最好有20个左右的标签。定期关闭未使用的标签。要打开资源,我们可以始终使用ctrl+shift+R和ctrl+shift+T(java资源),而不是打开很多选项卡

禁用不需要的插件。完整的J2EE eclipse版本具有禁用/卸载插件的选项。转到帮助-->软件更新-->管理配置。右键单击任何已安装的插件以获得禁用选项。如果此选项不可用,则通过转到Windows-->首选项-->能力并检查经典更新来启用经典更新。现在,管理配置选项应该可以在帮助菜单中使用

英特尔于2012年5月15日发布了ICS仿真器的推荐安装说明。这对我有用。模拟器现在很快,UI也很流畅。

前半部分的说明足够详细,因此我假设您能够使用Android SDK管理器以及Intel HAXM安装Intel x86 Atom System Image。

现在,为了确保其他一切都已设置,您可以享受高性能模拟器:

安装Intel硬件加速执行管理器(HAXM)

然后开始:

sudo kextload -b com.intel.kext.intelhaxm (mac)

如果HAXM工作正常,则在启动仿真器时可能会看到以下消息:

HAX正在工作,仿真器以快速虚拟模式运行

否则,您可能会看到以下错误:

HAX不工作,仿真器在仿真模式仿真器中运行:无法打开hax模块

使用GPU仿真。在撰写本文时,当使用GPU仿真时,不能使用快照选项。确保GPU仿真设置为“是”。将设备内存设置为1024 MB或更大,但不能超过Intel HAXM设置。我每个设备使用1024 MB,HAXM使用2048 MB。

保存后始终仔细检查设置!模拟器对它允许您设置的内容非常挑剔,它会在不告诉您的情况下恢复配置。

使用这些设置,软件键盘不再显示,屏幕上的后退键、菜单键和最近的键也不再显示。这似乎是当前ICS Intel x86系统映像的一个限制。您需要使用键盘快捷键。

在Mac OS上,您需要按住fn+控制键,F1-F12键才能工作。可以使用控制+箭头键执行向上/向下/向左/向右翻页。

使用ADB实用程序,我发现了一些更重要的信息。

模拟器实际上正在运行,但图形界面似乎是问题所在。

当Android启动屏幕打开时,您将一直等待,它看起来如下所示:

模拟器实际上正在运行,因为您可以运行以下命令行工具并查看列出的进程:

adb -s emulator-5554 shell ps 

这将为您提供一个在设备上运行的进程列表,这些进程似乎被卡住了。

我将输出通过管道传输到一个文件,下面是所有正在运行的进程的列表:

USER     PID   PPID  VSIZE  RSS     WCHAN    PC         NAME

root      1     0     696    500   c02ae25a 0805a406 S /init
root      2     0     0      0     c02315a2 00000000 S kthreadd
root      3     2     0      0     c021f9dc 00000000 S ksoftirqd/0
root      5     2     0      0     c022e8d7 00000000 S kworker/u:0
root      6     2     0      0     c022e085 00000000 S khelper
root      7     2     0      0     c022e8d7 00000000 S kworker/u:1
root      255   2     0      0     c02886de 00000000 S sync_supers
root      257   2     0      0     c028935e 00000000 S bdi-default
root      259   2     0      0     c022e085 00000000 S kblockd
root      267   2     0      0     c022e085 00000000 S ata_sff
root      278   2     0      0     c04f610f 00000000 S khubd
root      283   2     0      0     c022e085 00000000 S md
root      297   2     0      0     c022e085 00000000 S cfg80211
root      298   2     0      0     c022e8d7 00000000 S kworker/0:1
root      413   2     0      0     c0283057 00000000 S kswapd0
root      481   2     0      0     c02cd713 00000000 S fsnotify_mark
root      501   2     0      0     c022e085 00000000 S crypto
root      590   2     0      0     c022e085 00000000 S iscsi_eh
root      611   2     0      0     c048aa21 00000000 S mtdblock0
root      619   2     0      0     c048aa21 00000000 S mtdblock1
root      627   2     0      0     c048aa21 00000000 S mtdblock2
root      666   2     0      0     c022e8d7 00000000 S kworker/0:2
root      700   2     0      0     c022e085 00000000 S binder
root      724   2     0      0     c022e085 00000000 S deferwq
root      725   1     624    348   c02ae25a 0805a406 S /sbin/ueventd
root      932   2     0      0     c055236e 00000000 S mmcqd/0
root      939   2     0      0     c0340f30 00000000 S yaffs-bg-1
root      941   2     0      0     c0340f30 00000000 S yaffs-bg-1
root      942   2     0      0     c0340f30 00000000 S yaffs-bg-1
system    943   1     1340   400   c056a35d b76a1eb6 S /system/bin/servicemanager
root      944   1     5540   924   ffffffff b7646c11 S /system/bin/vold
root      947   1     1548   504   c05785ce b766c163 S /system/bin/debuggerd
radio     948   1     6420   1016  ffffffff b76d3c11 S /system/bin/rild
system    949   1     20088  2876  ffffffff b7655eb6 S /system/bin/surfaceflinger
drm       951   1     10480  2920  ffffffff b7585eb6 S /system/bin/drmserver
keystore  954   1     5036   1416  c056a35d b765deb6 S /system/bin/keystore
root      955   1     1324   440   c02d0083 b76b28ab S /system/bin/qemud
shell     958   1     1428   668   c03e9ad9 b767fa76 S /system/bin/sh
root      959   1     4680   304   ffffffff 08063530 S /sbin/adbd
graphics  1012  1     17980  4276  ffffffff b7652eb6 S /system/bin/bootanimation
media     4743  1     25288  6232  ffffffff b75beeb6 S /system/bin/mediaserver
root      4744  1     3944   1164  00000000 b7628976 R /system/bin/netd
root      4770  4744  0      0     c021de78 00000000 Z iptables
root      4771  959   1768   540   00000000 b766fa76 R ps

为了好玩,我运行了以下命令并终止了“Android”动画:

adb -s emulator-5554 shell kill 1012

启动屏幕变为空白,因此确实发生了一些事情。

我尝试并成功地杀死了一些其他进程,这让我感觉很好,但模拟器似乎从未启动过。哦,好吧。我正在运行一个QuadCore i7,内存为8Gb。同样使用本问题其他文章中描述的设置运行haxm。

注意:我在2014年9月19日更新了这一点-我了解到,仿真器会尝试启动实例,但永远不会启动的这种奇怪行为与仿真器文件的文件权限有关。由于复制的方式,它们被设置为只读,因此模拟器尝试安装并写入其“虚拟磁盘”,但它的“虚拟磁盘“实际上是一个文件或一组文件,我的操作系统将其设置为只读的,因此失败。这些故障导致仿真器永远无法启动。我将文件设置为完全访问,仿真器将在记录时间内启动。

一个新的选项是Visual Studio Emulator for Android——它速度快、Hyper-V、x86,即使没有VS也可以免费下载。