【问题标题】:Making the Android emulator run faster让安卓模拟器跑得更快
【发布时间】:2011-02-09 09:32:03
【问题描述】:

Android 模拟器有点慢。对于某些设备,例如摩托罗拉 Droid 和 Nexus One,该应用程序在实际设备中的运行速度比模拟器快。这是测试游戏和视觉效果时的问题。

如何让模拟器运行得尽可能快?我一直在玩弄它的参数,但还没有找到显示明显改进的配置。

【问题讨论】:

  • 我所有的应用在设备上运行得更快
  • 这很有趣,因为iPhone模拟器正好相反。应用程序在设备上运行速度较慢。在大多数情况下,我更喜欢速度较慢的模拟器,因为它会刺激您改进应用,但有时您只是希望看到它像在真实设备中一样工作。
  • 使用 VirtualBox 可以让它运行得更快,也就是正常运行 - 请参阅 stackoverflow.com/a/6058689/40961
  • iOS 和 Windows Mobile 使用模拟器,而 Android 使用模拟器。模拟器使用主机库重新实现所有移动库和 API,因此速度很快。模拟器使用与真实设备相同的库,因此速度较慢。在安卓方面,如果使用安卓虚拟机,速度会非常快。我们在这里提供免费的虚拟机:leapdroid.com
  • ...6 年后有多疯狂,即使使用 HAXM 和 x86 系统映像以及规范的开发环境,Android 模拟器仍然像糖蜜一样慢?

标签: android performance testing android-emulator emulation


【解决方案1】:

启用此选项对我有用。

AVD 管理器 -> 选择设备并单击编辑 -> 启用选项“使用主机 GPU”

【讨论】:

    【解决方案2】:

    如果您没有好的显卡(比如我),请选择低分辨率模拟器(例如:Nexus S)

    【讨论】:

      【解决方案3】:

      Official web page

      快 50%

      窗口:

      • 安装“Intel x86 Emulator Accelerator (HAXM)” => SDK-Manager/Extras
      • 安装“Intel x86 Atom 系统映像”=> SDK-Manager/Android 2.3.3
      • 转到 Android SDK 根文件夹并导航到 extras\intel\Hardware_Accelerated_Execution_Manager。执行文件 IntelHaxm.exe 进行安装。 (在 Android Studio 中,您可以导航到:设置 -> Android SDK -> SDK 工具 -> Intel x86 Emulator Accelerator(HAXM 安装程序))

      • 使用“Intel atom x86”CPU/ABI 创建 AVD

      • 运行模拟器并在控制台中检查 HAXM 正在运行(打开命令提示符窗口并执行命令:sc query intelhaxm)

      别忘了安装这个

      附:在 AVD 创建期间添加仿真内存:硬件/新/设备 ram 大小/设置值 512 或更多

      Linux:

      • 安装KVM:打开GOOGLE,写“kvm安装”
      • 使用“Intel atom x86”CPU/ABI 创建 AVD
      • 从命令行运行:emulator -avd avd_name -qemu -m 512 -enable-kvm
      • 或从 Eclipse 运行:运行/运行配置/选项卡“目标”-> 检查 Intel x86 AVD 并在“附加仿真器命令行选项”窗口中添加:-qemu -m 512 -enable-kvm(单击运行)李>

      附: For Fedora, for Ubuntu

      操作系统-X:

      • 在 Android SDK Manager 中,安装 Intel x86 Atom 系统映像
      • 在 Android SDK Manager 中,安装 Intel x86 Emulator Accelerator (HAXM)
      • 在 finder 中,转到 Intel Emulator Accelerator 的安装位置并安装 IntelHAXM(打开 dmg 并运行安装)。您可以通过将鼠标悬停在 SDK 管理器中的 Emulator Accelerator 条目上来找到该位置。
      • 创建或更新 AVD 并将 Intel Atom x86 指定为 CPU。

      P.S:检查一下这个工具,即使trial也很方便

      【讨论】:

      • 这也适用于 OSX。从SDK管理器下载包后需要安装/extras/intel/Hardware_Accelerated_Execution_Manager/IntelHAXM.dmg
      • 带有 "Use Host GPU" 的 Windows 指令给了我一个超快的模拟器! (我有一个受支持的 Intel 处理器和一个 nVidia 显卡。)动画非常流畅大部分时间;在其他时候,几乎没有抖动)!请注意,您必须重新启动 Eclipse 以便 AVD 管理器选择 Intel Atom (x86) CPU 选项。 提示: 不要分配过多的 RAM。使用 1GB RAM,模拟器无法启动(使用 GPU),但使用 512MB RAM,它运行平稳并且启动速度非常快(再次使用 GPU)。
      • 我发现 LogCat 收到了大量的跟踪警告。要过滤掉它们,请使用^(?!.*(nativeGetEnabledTags)).*$ 作为文本过滤器。我已将此报告为bug issue。另外,我认为您必须正确关闭您的模拟器设备(按住电源按钮,然后选择 Power off)以避免下次启动时出错(我可以关闭 ARM 模拟器,但使用英特尔模拟器,刚刚关闭似乎会产生问题)。
      • 如果可以的话,我会给你+100。在 Windows 8 上运行,性能大幅提升!
      • 我必须先通过控制面板下的程序和功能禁用 Hyper V 技术才能使其正常工作。
      【解决方案4】:

      使用 Genymotion 而不是模拟器。 Genymotion 具有更好的性能 https://www.genymotion.com

      【讨论】:

        【解决方案5】:

        您也可以尝试Visual Studio Android Emulator,它也可以作为独立的模拟器安装(您不需要 Visual Studio)。请注意,它只能安装在 Windows Pro 或更高版本的系统上。

        【讨论】:

          【解决方案6】:

          将您当前的 Android Studio 更新为 Android Studio 2.0 并更新系统映像。

          Android Studio 2.0 模拟器的运行速度比 Android 之前的模拟器快约 3 倍,并且通过 ADB 增强功能,您现在可以将应用程序和数据推送到模拟器的速度比物理设备快 10 倍。与物理设备一样,官方的 Android 模拟器也内置了 Google Play 服务,因此您可以测试更多的 API 功能。最后,新模拟器拥有丰富的新功能来管理通话、电池、网络、GPS 等。

          【讨论】:

            【解决方案7】:

            Google 最近宣布了一款新的 Android 模拟器。它比旧的更快更好。你可以找到更多关于它的信息here

            【讨论】:

              【解决方案8】:

              希望对你有帮助。

              Goto to your BIOS settings. Enable your Virtualization technology in your settings..

              它解决了我的问题...

              【讨论】:

                【解决方案9】:

                谢谢@zest!像魅力一样工作。一些注意事项:需要应用英特尔的 HAXM 修补程序来处理内核恐慌问题:http://software.intel.com/en-us/android/articles/intel-hardware-accelerated-execution-manager 另外,请注意,如果您有多个 abi,​​由于最新版本的 Android API (r19) 中的错误,您需要卸载一个:https://code.google.com/p/android/issues/detail?id=66740(在这种情况下删除 armeabi-v7a,因为您想要 x86阿比)。除了我花了 45 分钟解决这些问题之外,就提高模拟器的性能而言,这是一次非常有益的练习。

                【讨论】:

                  【解决方案10】:

                  编辑 虽然使用 Intel 图像可以获得一些性能提升,但使用 Genymotion 获得的性能要好得多。见Paul Lammertsma's answer

                  上一个答案

                  在 ADT rev 17 中,模拟器支持在 Windows 和 Mac OS X 上以虚拟化模式运行 x86 系统映像。这对性能有显着影响。

                  ADT rev 17 注释: http://android-developers.blogspot.jp/2012/03/updated-sdk-tools-and-adt-revision-17.html

                  配置虚拟机加速: http://developer.android.com/guide/developing/devices/emulator.html#accel-vm

                  【讨论】:

                    【解决方案11】:

                    更新:现在英特尔 x86 映像可用,最好的答案是上面的热情。

                    正如 CommonsWare 正确指出的那样,模拟器很慢,因为它模拟 ARM CPU,这需要转换为 Intel 操作码。这种虚拟化会消耗 CPU。

                    为了让模拟器更快,你必须给它更多的 CPU。如果可以的话,从快速 CPU 或升级开始。

                    然后,给模拟器更多的 CPU:

                    1. 禁用超线程 - 由于模拟器似乎不会使用多个内核,因此超线程实际上减少了模拟器将获得的总体 CPU 时间。禁用 HT 会降低利用多个 CPU 的应用程序的速度。必须在 BIOS 中禁用超线程。
                    2. 让模拟器在 CPU 0 以外的 CPU 上运行 - 这比关闭 HT 的影响要小得多,但对一些人有帮助。在 Windows 上,您可以指定进程将在哪个 CPU 上运行。许多应用程序会占用 CPU 0,默认情况下模拟器在 CPU 0 上运行。我将模拟器更改为在最后一个上运行。请注意,在 OS X 上,您无法设置关联(请参阅:https://superuser.com/questions/149312/how-to-set-processor-affinity-on-a-mac)。

                    我看到这两个变化带来了大约 50% 的改进

                    在 Windows 7 上设置处理器关联:

                    1. 打开任务管理器
                    2. 点击查看所有进程(以管理员身份运行,否则无法设置处理器关联)
                    3. 右键单击 emulator.exe 并选择 Set Affinity...
                    4. 在 Set Affinity 对话框中,仅选择最后一个 CPU

                    注意:当您以这种方式更改亲和力时,它只会在进程的生命周期内更改。下一次开始,你必须再做一次。

                    【讨论】:

                    • 当您禁用超线程时,CPU 百分比翻了一番,因为您将逻辑处理器的数量减半。
                    • 它像魅力一样工作,但是......你知道如何在 Ubuntu 11.10 上做到这一点吗?
                    • @Timothy003 是的,绝对正确。并将模拟器使用的 CPU 加倍。
                    • 你只看到任务管理器显示的数字加倍;不是在现实中。如果您没有运行足够的软件来生成足够的工作以在 100% CPU 下拥有相当于至少 4 个线程,那么少数使用大量 CPU 的应用程序仍将有效地获得几乎整个内核,而不是您天真的假设的半个内核任务管理器显示的意思。
                    • 确认@Dan Neely 所说的:我有一个单核应用程序,它只会消耗 100% 的 cpu。当我有 HT 时它显示大约 25%,没有它显示大约 50%,但实际上计算它必须同时计算的内容。所以没有区别(至少在桑迪桥上)。
                    【解决方案12】:

                    我想建议给Genymotion 一个旋转。它在 Oracle 的 VirtualBox 中运行,在中等系统上可以达到 60 fps。

                    这是我的一个研讨会的屏幕截图,在 2012 年的低端 MacBook Air 上运行:

                    如果您看不懂文字,那是 Nexus 7 模拟器,运行速度为 56.6 fps。额外的(大!)好处是 Google Play 和 Google Play 服务与虚拟机打包在一起。

                    (演示动画的来源can be found here。)

                    【讨论】:

                      【解决方案13】:

                      启用 GPU 硬件加速(除了 Intel 的 HAXM),如果您使用 API 15 v3 或更新版本以及 SDK Tools v17+。模拟器的图形加速利用您的开发计算机的图形硬件,特别是它的图形处理单元 (GPU),使屏幕绘制速度更快。这显着提高了速度。

                      要在您的模拟器上启用默认启用的图形加速:创建 AVD 时,在“硬件”部分中,单击“新建”,选择 GPU 仿真并将值设置为“是”。

                      仅在运行时启用加速:在启动模拟器时使用 -gpu 标志,如下所示:

                      emulator -avd <avd_name> -gpu on
                      

                      来源:Google's Using the Emulator tutorial

                      【讨论】:

                        【解决方案14】:

                        只是想说,在我安装了英特尔 HAXM 加速器并使用英特尔凌动映像后,仿真器的运行速度似乎快了 50 倍。差别是惊人的,看看吧!

                        http://www.developer.com/ws/android/development-tools/haxm-speeds-up-the-android-emulator.html

                        【讨论】:

                          【解决方案15】:

                          我一直在使用 Intel(86) CPU/ABI。我使用 ARM(armeabi-v7a) 创建了另一个模拟器,我发现速度有了很大的提高。我正在使用平台 4.1.2 API 级别 16

                          【讨论】:

                            【解决方案16】:

                            在今年的 google I/O (2011) 上,Google 展示了一个更快的模拟器。问题不在于 ARM 和 x86 之间的字节码,而在于 QEMU 执行的软件渲染。他们绕过 QEMU 的渲染并将渲染直接发送到我相信的 X 服务器。他们展示了一款性能和帧数都非常出色的汽车游戏。

                            我想知道开发人员什么时候可以使用它...

                            【讨论】:

                            • 这个模拟器有什么消息吗?它叫什么名字?
                            • 我没有任何消息。去年左右我没有跟进 Android 模拟器的更新。
                            【解决方案17】:

                            我注意到模拟器默认只有核心 0,大多数 Windows 应用程序将默认为“任何”核心。另外,如果你把它放在另一个核心上(比如最后一个核心),它可能会让模拟器发疯。如果可以,您可以尝试将高 CPU 使用率的应用程序放在其他 CPU 内核上以提高速度。

                            在硬件方面,获得适用于单核应用程序的最快 CPU。多于 2 个内核在仿真器性能方面可能不会有太大差异。

                            Eclipse + Android 模拟器一起消耗了大量的内存。我会推荐至少 3 GB 的 RAM,因为我使用了一个具有 2 GB RAM 的系统,并且它变慢了,因为系统用完了 RAM 并开始使用页面文件。

                            我觉得最好的 CPU 可能会有一个高时钟(顺便说一句,仅使用时钟作为同系列 CPU 的衡量标准),很好地处理非 SIMD 操作,并具有涡轮增压机制。基于 Java 的基准测试并不多,但总体上会寻找压缩和办公等应用程序基准。不要看游戏或媒体,因为它们受 SIMD 的影响很大。如果您找到 Java 版本,那就更好了。

                            【讨论】:

                              【解决方案18】:

                              我最近从具有 3gb ram 的 core 2 @ 2.5 切换到具有 8gb ram 的 i7 @ 1.73(两个系统都运行 Ubuntu 10.10),并且模拟器现在的运行速度至少是原来的两倍。投入更多硬件肯定会有所帮助。

                              【讨论】:

                              • 这并不是一个真正的解决方案:它可能使模拟器每次具有更高的吞吐量,但实际上不会让它运行得更快。
                              【解决方案19】:

                              我认为是因为 clr 虚拟机直接使用 cpu 没有代码操作码翻译。 它可能是针对 clr 应用程序的优化,也可能是在 INTEL 处理器上启动的 windows mobile/window phone 7。 Android平台基于linux,理论上可以在i686环境下的虚拟机上启动android。在这种情况下,vmware 等虚拟机可以直接执行一些操作码。但是只有在 Java 上编写时才允许使用此选项。因为Java在执行之前解释它们的字节码或预编译它。 看: http://www.taranfx.com/how-to-run-google-android-in-virtualbox-vmware-on-netbooks

                              【讨论】:

                                猜你喜欢
                                • 1970-01-01
                                • 2012-06-17
                                • 1970-01-01
                                • 1970-01-01
                                • 2010-09-17
                                • 1970-01-01
                                • 2022-12-01
                                • 1970-01-01
                                相关资源
                                最近更新 更多