姜饼模拟器比弗罗约及以下版本更加缓慢。为什么?

12

我不确定是否有其他人注意到,但是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以及所有Gingerbread性能改进方面的消息,但迄今为止我的经验恰恰相反。

我们能够搞清楚这个问题吗?此时我发现自己对启动Gingerbread实例感到担忧。

6个回答

2
所有以上答案都有其优点,应该考虑,但请记住,谷歌实现的用于模拟设备的虚拟机并不像微软和苹果那样好,可能没有太多的事情可以做,但确保您优化配置并获得更好的机器。
随着 Honeycomb 的推出,Android 系统使用更多的图形功率来渲染 UI。当在模拟器上运行时,它不能本地使用 PC 硬件的图形功率,而是必须模拟手机上的硬件,这总是导致性能损失。更通用的 X86 模拟器已经可用,例如 VMWare,但这可能需要一些时间才能提供给 Android SDK。在可用能够利用本地 GPU 的 X86 版本的 Android Honeycomb 之前,模拟器将会很慢。 唯一真正的解决方案是购买一个 Honeycomb 设备进行开发工作。

1
你可能会发现,为了方便开发人员所做的事情,必须对其进行root,从而使保修失效。 - Alan B
我建议不要购买任何三星设备进行开发,除非它有原生安卓系统,否则他们将不会继续支持该设备。 - Doug Molineux

2

当您创建新的GingerBread(API级别9) AVD时,请为其分配适量的RAM。

例如,Nexus S有512MB的RAM。

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

按“New…”以添加一个新的硬件参数,选择“Device ram size”,然后点击OK。

将默认值从96修改为512即可。


正如Brad Fitzpatrick的讨论中已经指出的那样,这个设置没有任何影响。 - Artem Russakovskii
2
如果你仔细阅读Brad的讨论,他谈到了“最大VM应用堆大小”。而我所说的是“设备RAM大小”,这是一个非常不同的属性。这对我有用。否则,默认的96 MB不足以运行后台任务。 - byeo
对我来说也没有什么区别,可能是我的电脑需要更多的内存,我以为4GB足够了。 - Doug Molineux
只有当你实际上用尽了RAM并且Android开始杀死后台任务并重新启动它们时,总RAM值才会有任何影响。模拟器的性能开箱即慢 - 这与内存无关。 - Artem Russakovskii

1

我在其他地方看到了这个讨论,其中提出仿真器参数没有设置好的建议。如果你给仿真器更多的内存,它显然会变得更加易用。


“给更多内存”是什么意思? - Randy Sugianto 'Yuku'
@yuku 当你创建一个 AVD 时,你可以为它分配一定数量的 RAM。 - bigstones
你是指创建AVD时的“Max VM应用堆大小”选项吗?如果是,它应该设置为多少? - Artem Russakovskii
啊,找到了。我刚试了一下 - 没有注意到任何区别。仍然比2.2慢得多,卡顿明显。 - Artem Russakovskii
确认。它稍微有所帮助,但仍然非常缓慢。 - Thilo-Alexander Ginkel
显示剩余2条评论

1

现在你可以轻松地编辑AVDs了,我已经尝试了一些Gingerbread AVD的设置,并且它终于变得非常可用。

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

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


1
我尝试了这些确切的设置-对我来说没有看到任何明显的差异。 - Artem Russakovskii
将MAX VM应用程序堆大小更改为500并不是很合适。这意味着每个应用程序可以使用高达500 MB的数据。直到最近,Delvic VM只能支持少于48 MB的内容。据我所知,拥有最大VM预算的设备是Xoom,我相信它只有48 MB。 此外,单个应用程序不应该能够使用Android设备的所有资源。还要记住,还有其他应用程序。我知道Android Services应用程序需要约50MB,其他本地硬件/进程需要一部分RAM。 - ddcruver
@ddcruver 感谢您的指出,那是一个笔误,本应该是50,但如果Xoom使用48也是有道理的。我会更新我的答案。 - Ian G. Clifton

0

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

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

我发现它与旧硬件上的Gingerbread没有太大区别。我希望主机加速的GL能尽快进入SDK。目前可能可以进行简单的开发,但无法创建UX或演示。


0

我的建议:

只有在需要时才连接SD卡,并且不要分配比所需更多的空间。这必须以某种方式进行模拟。

任何其他属性都不应该超出目标设备的限制。如果增加VM应用程序堆大小并且超过实际设备的值,则会发生崩溃,而您在开发过程中甚至没有注意到。

不可否认,默认值对于某些应用程序来说是不够的,设备RAM应至少为258,以达到目标Android设备的极限。还要记住,如果您的开发主机机器内存不足,则为模拟器分配的内存将不得不被交换,提供较小的内存量将避免不必要的页面命中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接