Android模拟器有多“好”?

正如标题所说,Android模拟器有多“好”?

我没有Android手机,但是可以纯粹使用仿真器作为testing环境吗?

我最初的问题是:

  • 是模拟器作为一个正常的Android手机响应(当然这取决于确切的手机,但一般)?
  • 有没有一种方法来控制模拟器上的内存?
  • 有没有人有问题已被标记在手机上,但不是模拟器? 或相反亦然?
  • 什么是你的正常testing程序来testing整个,或模拟器recursion和电话到底?

对于任何反馈,我们都表示感谢。

谢谢,

Solutions Collecting From Web of "Android模拟器有多“好”?"

问:模拟器是否像普通的Android手机一样响应(当然这取决于确切的手机,但总的来说)?
答:绝对不是! 最糟糕的例子是3D,也就是软件仿真。

问:有没有办法控制模拟器上的内存?
– 答:请指定,SD卡的大小是可configuration的,RAM /虚拟内存…我不知道。

问:是否有人在手机上标记过问题,但不是模拟器? 或相反亦然?
答:每个设备都有自己的定制。 在仿真器上,您只能更改屏幕分辨率,但请注意:仿真器屏幕的大小取决于您设置的像素密度。 所以在你的大型仿真器上看起来不错的东西在真实设备上可能太小了。 别忘了,手指比鼠标光标要大得多,不够精确。

问:什么是你的正常testing程序,以testing整个,或模拟器recursion和电话结束?
答:function在执行期间主要在(快速)设备上testing,如Nexus One。 实施后的真正testing将尽可能多的设备上。 用户界面也(大多数差异)

由于我有一个具有最新SDK的设备,我更喜欢在设备上进行testing。 这不是编程一个应用程序的必要条件,但请:不要发布一个应用程序没有至less一个真正的设备上的一轮testing:)

  1. 是的,模拟器非常快。
  2. 是的,您可以设置您希望模拟的目标的RAM大小。
  3. 我确定有人有,但我没有。
  4. 我通常在开发过程中在模拟器上进行testing,然后在我准备好进行长期testing时在我的G1上进行testing。 之后,我在模拟器上testing与1.5,2.0和2.1目标的兼容性时进行testing。

在这里看到什么选项目标支持。 请注意,还有一个用于设置这些的GUI工具。

要回答关于仿真器“好”的一般问题,你需要看看仿真器是什么。

仿真器是一个软件(qemu),它能够使用仿真在开发人员机器上运行arm指令。 这意味着模拟器将运行一个类似于在物理设备上运行的android平台。 这种设置比使用开发机器平台而不是目标硬件平台的模拟器要好。 然而,有一些限制,如

  • 外设支持 – 一个移动平台包括许多伴侣芯片,如蓝牙,wlan,gps,无线电接入,graphics加速等等。所有这些都与主CPU以不可预测的方式进行交互,难以在仿真器上模拟。 一些支持有限的方式,如互联网接入,而其他一些则完全不受支持,如蓝牙。
  • 性能 – 仿真器不是真正的处理器,可能不会使用实际设备上的物理加速器。 它也使用主机硬件的许多事情,这意味着与实际设备上的testing相比,内存访问和类似的项目performance不同。

一般的规则是,如果可能的话,尽可能在设备上进行尽可能多的testing,以避免意外。 仿真器适用于testing一般function,初始testing以避免明显的错误,并检查布局和UI在不同屏幕尺寸下的体面。 当涉及到与外界交互的任何性能严重的testing或行为(如networking交互)时,不推荐使用仿真器。 它可能告诉你,你的应用程序有严重的问题,但不要相信模拟器上的“足够好”,足以满足现实世界的需求。

我只会回答#3,因为其他答案已经被覆盖了。

肯定有一些问题只存在于仿真器上,而不是在设备本身上。 其中一个重要原因是机场模式根本不适用于模拟器。 互联网仍然工作,尽pipe转机场模式。

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

我知道在实际的设备和模拟器之间还有一些其他的小问题。 有足够的东西,我强烈build议你不要单独在仿真器上开发。

通过模拟器,只有您的testing将包含更多的模拟testing:

触摸传感器

有框架插件来模拟传感器/设备移动,使用您的networking摄像头的相机等

  1. 你需要内存使用emulatord像AVD模拟器,模拟器是testing的好,但有时它可以毫无理由地崩溃。
  2. 是的,您可以多次更改此设置。
  3. 前一段时间我无法效仿加速计,但现在我可以。
  4. 我更喜欢在真实的设备上testing我的应用程序。 我更喜欢在真实的设备上testing我的应用程序(如果我的朋友不能弄皱它和JUnittesting工作,那么它不应该是一个问题),但我testing模拟器上不同的屏幕大小。