安卓模拟器有多"好"?

15

正如标题所述,安卓模拟器有多“好”?

我没有安卓手机,但开发时只使用模拟器作为测试环境是否可行?

我最初的问题:

  • 模拟器的响应速度是否与正常的安卓手机一样(当然这取决于具体的手机型号,但总体来说呢)?
  • 有办法控制模拟器上的内存吗?
  • 是否有人遇到了在手机上出现但模拟器上未标记的问题?或反之亦然?
  • 你的正常测试程序是要在两者上进行持续测试,还是递归地在模拟器上测试,最后才在手机上测试?

欢迎提供任何反馈。

谢谢,

6个回答

7

问:模拟器的响应速度和普通安卓手机一样吗(当然这取决于具体的手机,但一般来说)?
答:绝对不是!最糟糕的例子是3D,因为它只有软件仿真。

问:是否有办法控制模拟器上的内存?
答:请具体说明,SD卡的大小是可配置的,RAM / VM内存...我不知道。

问:有没有人遇到过在手机上出现但在模拟器上没有被标记的问题?或反之亦然?
答:每个设备都有自己的定制。在模拟器上,您只能更改屏幕分辨率,但要小心:您模拟器屏幕的大小取决于您设置的像素密度。所以在您的大型模拟器上看起来不错的东西,在实际设备上可能太小了。而且不要忘记,手指比鼠标光标大得多,也不如鼠标光标准确。

问:您的正常测试程序是测试两者,还是先递归地测试模拟器,然后测试手机?
答:功能在实现期间主要在(快速)设备上进行测试,例如Nexus One。实施后的真正测试将在尽可能多的设备上进行。UI也是如此(最大的区别在于那里)。由于我有一台具有最新SDK的设备,因此我更喜欢在设备上进行测试。这对编写应用程序并不是必需的,但请注意:不要在没有至少在一个真实设备上进行测试的情况下发布应用程序 :)。


2
模拟器的速度高度依赖于您的计算机。在我用于开发的MacPros上,模拟器比真实手机更快(除了Droid和NexusOne)。 - Romain Guy

3
  1. 是的,模拟器非常快。
  2. 是的,您可以设置要模拟的目标的RAM大小。
  3. 我相信有人已经这样做了,但我没有。
  4. 在开发过程中,我通常会在模拟器上进行测试,然后在准备进行长期测试时使用G1。之后,我会在检查与1.5、2.0和2.1目标的兼容性时再次在模拟器上进行测试。

请参见此处以了解目标支持的选项。请注意,还有一个GUI工具可用于设置这些选项。


好的,我从来没有用过G1(我的第一部手机是Galaxy),但与N1相比,模拟器速度较慢。很高兴看到有人比我更喜欢使用模拟器。 - WarrenFaith
我这里有一台G1、HTC Hero和Nexus One,模拟器与G1和Hero相同,速度也差不多,但正如WarrenFaith所说,由于SnapDragon处理器的加持,Nexus One要快得多。 - Donal Rafferty

1

要回答关于模拟器的“好坏”问题,您需要了解模拟器是什么。

模拟器是一种软件(qemu),能够使用仿真在开发机上运行ARM指令。这意味着模拟器将运行类似于物理设备上运行的Android平台。与编译为开发机而不是目标硬件的模拟器相比,这种设置更好。然而,存在许多限制,例如:

  • 外围设备支持 - 移动平台包括许多伴侣芯片,如蓝牙、WLAN、GPS、无线电接入、图形加速等。所有这些都以不可预测且难以在模拟器上模拟的方式与主CPU交互。有些受到有限支持,例如互联网访问,而其他一些则根本不受支持,例如蓝牙。
  • 性能 - 模拟器不是真正的处理器,可能无法使用实际设备上可用的物理加速器。它还使用主机机器硬件进行许多操作,这意味着与在实际设备上测试时不同,内存访问和类似项目的行为也会有所不同。
一般规则是,如果可能的话,请尽可能在设备上进行尽可能多的测试,以避免最终出现意外情况。模拟器适用于诸如测试通用功能、初步测试以避免明显错误和检查不同屏幕尺寸下的布局和用户界面看起来是否得体等方面。当涉及任何性能关键测试或与外部世界交互的行为时(例如网络交互),不建议使用模拟器。它可能会告诉你,你的应用程序存在严重问题,但不要相信模拟器上"好到足够"就足够适用于真实世界。

1

我只回答问题#3,因为其他答案已经涵盖了。

在模拟器上存在一些问题,而在设备本身上不存在。其中一个主要问题是机场模式根本无法在模拟器上工作;即使打开飞行模式,互联网仍然可以工作。

此外,如果您只是使用存储的模拟器,则无法访问市场,这意味着您的应用程序可能尝试通过模拟器与之交互的任何方式都无法进行测试。

我知道还有一些其他小问题,这些问题在实际设备和模拟器之间存在差异。由于有足够的事情,我强烈建议您不要只在模拟器上开发。


0

只有使用模拟器,你的测试才能进行更多的模拟测试以覆盖:

-触摸 -传感器

有一些框架可以插件到模拟传感器/设备移动、使用网络摄像头等来模拟相机。


0
  1. 使用模拟器(如AVD模拟器)需要内存,虽然模拟器用于测试很好,但有时可能会无缘无故崩溃。
  2. 是的,您可以多次更改此设置。
  3. 以前我不能模拟加速度计,但现在我可以。
  4. 我更喜欢在真实设备上测试我的应用程序(如果我的朋友不能崩溃并且JUnit测试正常运行,那么这不应该成为问题),但我会在模拟器上测试不同屏幕尺寸。

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