我在x86 Windows XP Professional机器上有2.67 GHz赛扬处理器和1.21 GB RAM。
我的理解是,Android Emulator应该在这样的机器上启动得相当快,但对我来说,它没有。我遵循了设置IDE、SDK、JDK等的所有说明,并在快速启动仿真器方面取得了一些成功,但这非常罕见。如果可能的话,我如何解决这个问题?
即使它启动并加载主屏幕,它也非常缓慢。我已经在3.5版(伽利略)和3.4版(木卫三)中尝试过Eclipse IDE。
我在x86 Windows XP Professional机器上有2.67 GHz赛扬处理器和1.21 GB RAM。
我的理解是,Android Emulator应该在这样的机器上启动得相当快,但对我来说,它没有。我遵循了设置IDE、SDK、JDK等的所有说明,并在快速启动仿真器方面取得了一些成功,但这非常罕见。如果可能的话,我如何解决这个问题?
即使它启动并加载主屏幕,它也非常缓慢。我已经在3.5版(伽利略)和3.4版(木卫三)中尝试过Eclipse IDE。
当前回答
英特尔于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键才能工作。可以使用控制+箭头键执行向上/向下/向左/向右翻页。
其他回答
一个新的选项是Visual Studio Emulator for Android——它速度快、Hyper-V、x86,即使没有VS也可以免费下载。
为初学者提供简单易行的解决方案。我尝试了很多方法,并停止了将Genymon与Eclipse结合使用。Genymotion只需在Eclipse中添加一个虚拟设备。
一步一步地:
从这里下载包含VirtualBox的Genymotion。在VirtualBox中安装包含此包的内部版本。从这里将插件安装到Eclipse中。启动GenyMotion并创建您想要使用的虚拟设备,然后启动它。在Eclipse中,转到Window->Preferences->GenyMobile->GenyMotion,并将路径设置为GenyMotioon(在我的例子中,为C:\ProgramFiles/GenyMobile/GenyMotion)。单击Eclipse中要启动的项目名称。使用“运行方式”启动应用程序。在设备列表中,您应该看到模拟设备。你可以模仿你想要的。
在我看来,这个解决方案是唯一的快速解决方案。Eclipse中没有模拟器工作得这么快,而且每个设置都非常慢。只有此解决方案几乎实时工作。我可以推荐(笔记本i3,2.6 GHz)。
使用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日更新了这一点-我了解到,仿真器会尝试启动实例,但永远不会启动的这种奇怪行为与仿真器文件的文件权限有关。由于复制的方式,它们被设置为只读,因此模拟器尝试安装并写入其“虚拟磁盘”,但它的“虚拟磁盘“实际上是一个文件或一组文件,我的操作系统将其设置为只读的,因此失败。这些故障导致仿真器永远无法启动。我将文件设置为完全访问,仿真器将在记录时间内启动。
在模拟设备时,尝试使用Intel X86 Atom Storage Image进行相对更快的启动,而不是使用基于ARM的映像。
需要注意的另一件事是,根据您的系统配置,使用1.21 GB RAM运行Android模拟器可能是一种缓慢的体验,因为模拟器需要高达一定百分比的RAM,用于模拟设备,而不会忘记ADT使用的RAM。
尝试2.1-2.3.3的系统映像,以获得至少可运行的体验。此外,不要忘记“保存到快照”以加快加载速度。尽管第一次加载可能需要时间。但保存到快照肯定会节省一些时间。
HAXM是一种使英特尔处理器仿真器快速运行的方法,HAXM是内核驱动程序部分,用户空间仿真器部分基于QEMU,这意味着QEMU有一个分支使用HAXM(这个QEMU分支非常特定于android仿真器(而且似乎也基于较旧版本的QEMU)。
但是,当我用我的英特尔酷睿i3处理器和4千兆字节的RAM时,它对速度没有太大影响。所以这不是我的解决方案。
当我使用4GB RAM cpu时,Emulator变成了RAM消耗器,但为了使它更方便,有一些方法我更喜欢基于Android*86支持的模拟器。由于android工作室现在推出了即时运行,所以在首次发布后,应用程序的安装变得更快,但我一直面临着这个问题,似乎没有办法摆脱这个问题。
我还使用了Droid4x,它对我来说非常方便,但我找不到安装不同api版本的方法,我使用了kitkat,它比android模拟器更快,而且还支持VT,所以我找到了另一种方法和一个很好的解决方案,那就是Visual Studio emulator。您可以在这里阅读更多关于它的信息,我最新使用的是LeapDroid,它真的很强大。请参阅此处的比较
我更喜欢在4GB ram PC上使用Real设备,然后使用模拟器。