如何获得Android应用程序的最低硬件要求

时间:2013-03-12 09:55:10

标签: android android-hardware android-memory

我与一些团队成员合作开发了一个Android应用程序,它通过移动设备收集现场数据。

现在这个应用程序正在投入生产。所以普通人会使用这个应用程序。 我们还需要创建一个文档来解释我的android应用程序中介绍的所有内容以及运行此应用程序时的最低硬件要求是什么。

现在我怎么知道什么是最低硬件要求。

我的申请中基本上有四个TextField,三个SpinnerDateEditText和两个ImageView

所以我怎么知道运行这个应用程序的最低内存要求是什么。

我在其中一个移动设备中尝试过这个应用程序,其中几乎所有内存都被其他应用程序使用。我的应用程序无法捕获照片。当我删除一些应用程序时,我的应用程序工作正常。

这就是为什么我想知道运行我的应用程序的最低内存要求是什么。

6 个答案:

答案 0 :(得分:13)

最低要求取决于并且主要包括以下几点的测试和记录:

  1. API级别:支持最低Android版本,其主要由开发人员所知。 Android中的API之间有很多重大变化。支持v4和v7-compat库确实有很多帮助,但它们并不涵盖所有方面。

  2. 设备功能:记下您的应用使用的所有功能。 (如有触摸屏,有摄像头,加速度计,网络连接等)。幸运的是,您可以在App manifest(uses-feature)中声明,Play商店会过滤掉不支持的设备。

  3. RAM :使用DDMS / Android Studio查看模拟器和真实设备上的实时内存使用情况。尝试使用可以使用的ram,通过触发应用程序的各种功能,让它保持运行很长一段时间。将最小和最大使用量作为估计值。 TraceView等DDMS工具还允许您查看堆,线程上的对象分配以及方法分析。长时间运行Monkey Tool以强调该应用。

  4. CPU速度 IF 应用程序执行密集计算,数据转换等,您可能希望在此类计算代码中编写一些时间戳日志。确保设置CPU速度,以便在需要完成任何计算的情况下,在足够的时间内完成,而不会使设备滞后太多。同样在视觉渲染的情况下,(游戏)良好的帧速率是主要因素。在这种情况下,您可以对实际设备进行帧速率测试,并选择高端芯片组。您还可以推荐用户使用多核设备。

  5. CPU / GPU兼容性:另一个重要细节是,如果应用程序具有C / C ++代码,则该代码可能无法在某些CPU类型(MIPS,ARM或x86)上运行。使用OpenGL ES版本和可用扩展的应用程序也是如此。设备有不同的cpu / graphic芯片组。

  6. 磁盘:安装后估算应用的大小,请注意,App的最低磁盘要求是存储应用本身所需的空间,因此它至少可以启动,并且不包括缓存,数据库或它在使用时创建的用户内容。

  7. 显示尺寸:始终建议使用响应灵活的用户界面,但您的应用可能只适用于某些屏幕尺寸。因此,可以考虑兼容的屏幕尺寸。

  8. 您无法控制的内容:请记住,您无法控制其他用户可能运行的内容,因此,可以安全地声明您的应用需要设备上有这么多 free ram,并假设最好的方案,声明该设备至少安装了那么多ram。例如,您注意到应用程序在最大化时需要200 MB,因此要求仅为512 MB +设备。另外你无法控制SD卡用户的大小,因此App应该及时告诉用户磁盘已满时无法正常工作。

  9. 最后,良好的测试将估算转化为真正的基准。并且最好只根据基准测试来确定基准要求。

    <强>更新

      

    Android是否有任何API或类可以提供信息   是最低内存要求取决于我可能的字段   在我的申请中使用以及我正在接受的许可   手机。

    1. API无法准确预测运行时。代码中会有许多ifelse,加上用户输入,您无法预测对象创建和执行的确切路径。您只能使用DDMS等工具在外部监视运行时。

    2. 与Apple不同,Android是一个开放系统,制造商可以自由选择的设备硬件的可能性是巨大的。再加上他们在设备ROM中所做的自定义。没有通用的API可以跟踪所有这些。只需坚持使用android API和标准规范,避免使用隐藏的API等。

答案 1 :(得分:3)

问你应该问自己

<强> 1。我的记忆要求是什么? 您是否需要大量内存(在堆中不是物理上的)来处理数据或者它是最小的?现在一天的大多数设备都有64 MB的堆大小,但这从制造商到制造商各不相同。即使对于相同的API级别,它也是不同的。找出您的最小值,然后确保您有可用的堆内存量。

要监视运行时消耗的内存,请检查this

查看当前设备上可用的堆内存量thisthis

记住android不像windows,每个应用程序都以相同数量的堆内存开始,并且对于该设备上的每个应用程序都是不变的。这意味着不允许应用程序超出此可用内存。您可以通过清单android:largeHeap="true"中的此标记请求额外内存,但此功能不适用于3.0之前的操作系统版本。

  

我在其中一个移动设备中尝试过这个应用程序,其中几乎所有内存都被其他应用程序使用。我的应用程序无法捕获照片。当我删除一些应用程序时,我的应用程序工作正常。

以上假设非常令人困惑,因为当您运行Android的应用程序放置所有其他应用程序端时,这意味着您的应用程序将具有您的堆大小定义的内存,并且如果操作系统认为它需要更多内存或未能分配更多内存会杀死那些进程。 Android优先考虑当前运行的任务。因此,如果您正在与应用程序进行交互,那么它的内存大小就不会太小。他们可能会因为其他应用程序出现问题而有其他不同的原因。

<强> 2。我的API要求是什么? 如果您使用的是旧API和级别不可用的任何特殊API,那么您有两种选择,或者您说应用程序根本不支持该API版本,或者您可以返回端口该特定功能。

第3。我的硬件要求是什么? 问问自己是否使用任何专业软件或硬件,如果特殊硬件可用于所有设备?例如,NFC,蓝牙。

<强> 4。我的显示要求是什么?此应用仅适用于移动设备还是适用于移动设备和平板电脑?那些落在平板电脑和手机之间的7英寸呢。

<强> 5。我的本地化要求是什么? 这个应用程序是否依赖于任何特殊字符集?如果某个设备没有这些字符该怎么办?

并且,你提到的FYI对象数量不应该超过几MB。但是在使用位图时要小心。 Read this

答案 2 :(得分:2)

似乎可以保证Android中的任何进程都拥有至少16MB的内存,大多数现代设备允许堆增长到24 + MB

请参阅说明 http://developer.android.com/reference/android/app/ActivityManager.html#getMemoryClass()

操作系统端的所有内存管理,http://developer.android.com/guide/components/processes-and-threads.html#Lifecycle

中描述了进程和线程的优先级

因此,如果您的应用程序位于前台,则很可能您有足够的资源来处理来自摄像头的图像。

您使用什么API来捕获图像?

答案 3 :(得分:2)

了解您的应用是否可以在某些硬件上运行的最佳方法是在该硬件上进行测试。问你的朋友他们是否有旧的Android手机,并测试你的应用程序。

最糟糕的情况是,使多个Android虚拟设备具有不同的内存。请注意,即使使用硬件加速,Android模拟器的速度也令人失望。

答案 4 :(得分:2)

正如@veon所说,你可以做一些估计。但是,它总是有点不可预测,因为你想知道它将在不同的环境中使用多少,你需要用户知道手机上其他应用程序的使用情况。

据我了解,您主要需要提供的是清晰的文档。对于您和所有人来说,记录它可能要容易得多:

  

此应用程序将在所有最新的标准Android手机上运行   (Android版XXX及以上版本)。但是,如果是其他应用程序   正在运行,特别是那些正在运行的内存正在运行   表现可能会受到影响。如果您遇到性能问题,   请删除其他内存和处理繁重的应用程序。   如果您需要帮助确定,请使用如下的应用程序   ZDbox帮助你。

作为参考,我没有指向ZDbox的链接,我只是以它为例。

答案 5 :(得分:1)

  

这就是为什么我想知道运行我的应用程序的最低内存要求是什么。

使用little eye labs中的监控工具。它在other things之间监控应用的功耗/内存消耗/ CPU消耗/网络活动。你可以download进行为期30天的试用。这应该可以让您充分了解应用消耗的资源。我不得不说,虽然应用程序通常不会发布一系列硬件要求。保持你的记忆/电池使用情况,你应该没事。

至于低内存,当您显示相机拍摄的照片或相机本身是否会降低应用程序时,是否会发生这种情况?您是否正在释放相机所拥有的资源?看看这个问题 - Android camera out of memory exception