【问题标题】:Gingerbread emulator instance is much more sluggish than Froyo and below. Why?Gingerbread 模拟器实例比 Froyo 及以下版本慢得多。为什么?
【发布时间】:2010-12-13 19:08:02
【问题描述】:

我不确定其他人是否注意到了这一点,但 Gingerbread 模拟器运行起来就像狗一样,滚动、导航、交互都需要更长的时间,而且更不稳定。当我尝试使用它时,我什至在浏览器中遇到了 ANR:http://www.androidpolice.com/2010/12/06/walkthrough-and-hands-on-with-the-gingerbread-ui-the-new-gingerbread-keyboard-in-all-its-sexiness/(见底部)。

我刚刚在http://android-developers.blogspot.com/2010/12/new-gingerbread-api-strictmode.html 阅读了有关新的 StrictMode 以及 Gbread 的所有性能改进的信息,但我迄今为止的经验表明恰恰相反。

我们能查到真相吗?在这一点上,我发现自己害怕提出 Gingerbread 的实例。

【问题讨论】:

    标签: android performance emulation android-sdk-2.3 android-strictmode


    【解决方案1】:

    以上所有答案都有其优点,应予以考虑,但请记住,Google 用于模拟设备的虚拟机实施不如 Microsoft 和 Apple 提供的那么好,您可能无能为力,但请确保您优化配置并获得更好的机器。

    随着 Honeycomb 的引入,android 系统正在使用更多的图形能力来渲染 UI。这在模拟器上运行时不能原生使用 PC 硬件的图形功能,但大多数模拟手机上的硬件,这总​​是会导致性能下降。更通用的 X86 仿真器已经可用,例如 VMWare,但这可能需要一些时间才能用于 Android SDK。在可以利用您的原生 GPU 的 Android Honeycomb 的 X86 端口可用之前,模拟器会很缓慢。

    唯一真正的解决方案是购买 Honeycomb 设备进行开发工作。

    【讨论】:

    • 并且可能发现您必须对其进行 root 才能轻松完成开发人员所做的事情,从而使保修失效。
    • 我建议不要购买任何三星设备进行开发,除非它有 Vanilla Android,否则他们将不会继续支持该设备
    【解决方案2】:

    当您创建新的 GingerBread(API 级别 9)AVD 时,请为其提供实际数量的 RAM。

    例如 Nexus S 有 512MB

    您可以在“创建新的 Android 虚拟设备 (AVD)”对话框中执行此操作。

    按“New...”添加新的硬件参数并选择“Device ram size”,点击OK。

    将默认数量从 96 修改为 512。

    【讨论】:

    • 正如 Brad Fitzpatrick 的讨论中所述,此设置没有任何区别。
    • 如果您仔细阅读 Brad 讨论了“最大 VM 应用程序堆大小”。我说的是“设备内存大小”,这是一个非常不同的属性。它对我有用。否则默认的 96 Mb 不足以运行后台任务。
    • 对我也没有任何影响,可能是我的电脑需要更多内存,但我认为 4 GB 就足够了..
    • 只有当你真的用完它并且 Android 开始杀死后台任务,然后重新启动它们时,总 RAM 值才会有任何区别。模拟器的性能开箱即用很慢 - 内存与它无关。
    【解决方案3】:

    我在其他地方看到了有关此问题的讨论,这表明仿真器参数设置不正确。如果你给模拟器更多的内存,它显然会变得更有用。

    【讨论】:

    • “给更多内存”是什么意思?
    • @yuku 创建 AVD 时,您可以为其分配一定数量的 RAM
    • 您是指制作 AVD 时的“最大 VM 应用程序堆大小”选项吗?如果有,应该是什么?
    • 我看到默认设置是 24,所以我将其设置为 128。没有区别 - 性能仍然很慢。我是否调整了错误的值?
    • @Artem 是“设备内存大小”。
    【解决方案4】:

    现在您可以轻松地编辑 AVD,我尝试调整 Gingerbread AVD 的一些设置,终于可以使用了。

    • SD 卡:500MiB
    • 皮肤:WVGA800
    • 抽象 LCD 密度:240
    • 缓存分区大小:128MB
    • 最大 VM 应用程序堆大小:48
    • 设备内存大小:512

    我的猜测是 RAM 和最大 VM 堆是最重要的,但我认为最好包括所有设置,因此您可以尝试这些作为起点,然后进行调整。

    【讨论】:

    • 尝试了这些确切的设置 - 对我来说没有明显差异。
    • 将 MAX VM 应用程序堆大小更改为 500 并不是那么合适。这说明每个应用程序本身最多可以使用 500 MB 的数据。直到最近,Delvic VM 只能支持总共不到 48 MB 的东西。据我所知,VM 预算最多的设备是 Xoom,我相信它有 48 MB。此外,单个应用程序不应该能够使用 android 设备的所有资源。还要记住还有其他应用程序。我知道 Android 服务应用程序需要大约 50MB,而其他本机硬件/进程需要该内存的一部分。
    • @ddcruver 谢谢你的收获;那是一个错字,应该是 50,但如果 Xoom 使用的是 48,那么 48 是有道理的。我会更新我的答案。
    【解决方案5】:

    我的建议:

    仅在需要时才附加 SD 卡,并且很可能不会分配超出您需要的数量。这必须以某种方式进行模仿。

    不应将任何其他属性夸大到您的目标设备之外。如果您增加 VM 应用程序堆大小并超过真实设备的值,它们将出现您在开发过程中甚至没有注意到的崩溃。

    诚然,对于某些应用程序而言,默认值是不够的,并且 Device Ram 应至少为 258,以达到目标 android 设备的限制。另请记住,如果您的开发主机内存不足,那么您为模拟器分配的内存将不得不被交换,并且提供较小的内存量将避免不必要的页面命中。

    【讨论】:

      【解决方案6】:

      更改屏幕分辨率后,设备启动,让设备“预热”并在新硬件上运行,我记录了 Honeycomb 模拟器的速度。

      结果在:http://www.youtube.com/watch?v=-7OR8vPsIak

      我发现它与旧硬件上的 Gingerbread 没有太大区别。我确实希望主机加速的 GL 能尽快找到 SDK。目前,简单的开发可能是可能的,但用户体验创建或演示是不可能的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-08-22
        • 1970-01-01
        • 1970-01-01
        • 2017-12-26
        • 2011-01-25
        • 2012-12-20
        • 1970-01-01
        相关资源
        最近更新 更多