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

我和一些团队成员开发了一款通过手机收集数据的android应用程序。

现在这个应用程序正在生产。 所以一般人会使用这个应用程序。 我们还需要创build一个文档来解释在我的android应用程序中引入的所有东西,以及运行这个应用程序没有错误的最低硬件要求是什么。

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

基本上在我的应用程序四个TextField ,三个SpinnerDateEditText和两个ImageView

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

我已经在其中一个移动的地方尝试这个应用程序,几乎所有的内存都被其他应用程序使用。 有我的应用程序无法捕捉照片。 当我删除一些应用程序,然后我的应用程序工作正常。

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

Solutions Collecting From Web of "如何获得android应用程序的最低硬件要求"

最低要求将取决于,并将主要包括以下几点的testing和文档:

  1. API级别 :支持的最小Android版本,其开发人员最为熟悉。 在android的API之间有很多重大的变化。 支持v4和v7-compat库确实有很多帮助,但是它们并不涵盖所有方面。

  2. 设备function :记下您的应用使用的所有function。 (如有触摸屏,有相机,加速度计,networking连接等)。 幸运的是,你可以声明,在应用程序清单( uses-feature )和Play商店将过滤出不支持的设备。

  3. RAM :使用DDMS / Android Studio在仿真器和实际设备上查看实时内存使用情况。 尝试使用尽可能多的ram你可以使用,通过触发应用程序的各种function,保持运行很长的时间间隔。 以最小和最大使用量作为估计值。 像TraceView等DDMS工具也可以让你看堆对象分配,线程和做方法分析。 运行猴子工具很长一段时间压力的应用程序。

  4. CPU速度如果应用程序进行密集计算,数据转换等,您可能需要在这样的计算代码中编写一些时间戳日志。 确保你设置的CPU速度,以便无论需要做什么计算,在充足的时间内完成,而不会使设备滞后太多。 另外在视觉渲染的情况下,(游戏)好的帧率是主要因素。 在这种情况下,您可以对实际设备的帧速率进行基准testing,并select高端芯片组。 您还可以推荐用户使用多核设备。

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

  6. 磁盘 :安装后估计应用程序的大小。请注意,App的最低磁盘需求是存储应用程序本身所需的空间,因此它至less可以启动,并且不包括caching,数据库或其创build的用户内容使用上。

  7. 显示大小 :总是build议使用响应灵活的用户界面,但您的应用程序可能只能用于特定的屏幕大小。 所以,兼容的屏幕尺寸可以考虑在内。

  8. 你不能控制的东西 :记住你不能控制其他应用程序用户可能运行的东西,因此,它可以安全地声明你的应用程序需要这个免费的内存,并假设最好的情况下,声明该设备至less有安装了很多ram。 例如,你注意到你的应用程序需要200MB的时间,所以要求只有512MB +设备。 你也无法控制SD卡用户的大小,因此,应该及时告诉用户在磁盘满了时不能工作。

最后,好的testing是将估算转化为真实的基准。 而且更好的基础上的基准要求,而不是只估计。

更新

是否有任何API或类的android给予的信息是什么是最小的内存要求,取决于我在我的应用程序中使用的字段的可能性以及我正在使用手机的许可。

  1. API无法准确预测运行时间。 在你的代码中会有很多ifelse ,加上用户input,你不能预测对象的创build和执行会走哪条path。 您只能使用DDMS等工具在外部监视运行时。

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

问题你应该问你的自我

1.我的记忆要求是什么? 你是否需要大量的内存(不是物理上的堆)来处理数据还是最小的? 现在,大部分设备都有64 MB的堆大小,但这种情况因制造商而异。 即使对于相同的API级别也是如此。 找出你的最低限度,然后确保你有可用的堆内存。

要监视在运行时消耗的内存,请检查此内容

找出当前设备上有多less堆可用的内存检查这个和这个 。

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

我已经在其中一个移动的地方尝试这个应用程序,几乎所有的内存都被其他应用程序使用。 有我的应用程序无法捕捉照片。 当我删除一些应用程序,然后我的应用程序工作正常。

上面的假设是相当混乱的,因为当你的运行Android的应用程序把所有其他的应用程序端,这意味着你的应用程序将有你的堆大小定义的内存,如果操作系统认为它需要更多的内存或未能分配更多它会杀死这些进程。 Android优先考虑当前正在运行的任务。 所以,如果你正在与一个应用程序进行交互,那么它就不太可能会有更less的内存,然后堆大小。 他们可能有一些不同的原因与其他应用程序的麻烦。

2.我的API要求是什么? 如果您正在使用任何特定的API,而旧API和级别都无法使用,那么您有两种select,要么您说应用程序根本不支持该API版本,要么您可以支持该特定function。

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

4.我的显示要求是什么? 这个程序只适用于手机或手机和平板电脑? 那些落在平板电脑和手机之间的7英寸呢?

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

而且,你提到的FYI的对象数量不应该占用更多的MB。 但是在处理位图时要小心。 读这个

它似乎保证在Android的任何进程将有至less16MB的内存,大多数现代设备允许堆增长到24 + MB

请参阅http://developer.android.com/reference/android/app/ActivityManager.html#getMemoryClass()的描述

内存pipe理全部在操作系统端,在http://developer.android.com/guide/components/processes-and-threads.html#Lifecycle中描述了进程和线程的优先级

所以如果你的应用程序在前台,最有可能你有足够的资源来处理来自相机的图像。

你用什么API来捕捉图像?

找出您的应用程序是否在特定硬件上运行的最佳方法是在该硬件上进行testing。 问问你的朋友,如果他们有更旧的Android手机,并testing你的应用程序。

最糟糕的情况是,使多个Android虚拟设备具有不同的内存。 但是要小心,即使在硬件加速的情况下,android模拟器的速度也令人失望。

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

据我所知,你主要需要提供的是明确的文件。 这可能会更容易(为了您和所有人)来logging它,如下所示:

此应用程序将运行在所有最新的标准Android手机(Android版本XXX和以上)。 但是,如果其他应用程序正在运行,特别是内存不足的应用程序正在运行,则性能可能会受到影响。 如果您遇到性能问题,请删除其他内存过大的应用程序。 如果您需要帮助确定,请使用ZDbox等应用程序来帮助您。

作为参考,我没有链接到ZDbox,我只是用它作为例子。

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

使用小眼睛实验室的监测工具。 它监视您的应用程序的功耗/内存消耗/ CPU消耗/networking活动等等 。 您可以下载 30天试用版。 这应该给你一个公平的想法,你的应用程序消耗的资源。 我不得不说,虽然这些应用程序通常不是一套硬件要求发布。 保持你的记忆/电池使用情况,你应该没问题。

至于内存不足,当您显示相机拍摄的照片或照相机本身是否会降低应用程序时,会发生这种情况吗? 你是否释放相机所拥有的资源? 看看这个问题 – Android摄像头内存exception