15

私と何人かのチーム メンバーは、モバイルでフィールド上のデータを収集する Android アプリケーションを開発しました。

現在、このアプリケーションは本番環境に移行しています。したがって、一般の人はこのアプリケーションを使用します。また、アプリケーションで導入されたすべてのものと、このアプリケーションをエラーなく実行するために必要な最小ハードウェア要件を説明するドキュメントを作成する必要があります。

ハードウェアの最小要件を知るにはどうすればよいですか?

基本的に、私のアプリケーションには、約 4 つTextFields、3 つSpinners、および 2 つのDatesがあります。EditTextsImageViews

では、このアプリケーションを実行するために必要な最小メモリ要件を知るにはどうすればよいでしょうか。

ほとんどすべてのメモリが他のアプリケーションによって使い果たされているモバイル デバイスで、このアプリケーションを試してみました。私のアプリケーションは写真をキャプチャできません。そして、いくつかのアプリケーションを削除すると、アプリケーションは正常に動作します。

そのため、アプリケーションを実行するために必要な最小メモリ要件を知りたいのです。

4

6 に答える 6

13

最小要件は次の点に依存し、主に次の点のテストとドキュメントが含まれます。

  1. API レベル: サポートされている Android の最小バージョン。ほとんどの場合、開発者によって知られています。Android の API 間で多くの大きな変更がありました。サポート v4 および v7-compat ライブラリは大いに役立ちますが、すべての側面をカバーしているわけではありません。

  2. デバイスの機能: アプリが使用するすべての機能を書き留めます。(タッチスクリーン、カメラ、加速度計、ネットワーク接続など)。幸いなことに、アプリ マニフェスト ( uses-feature) と Play ストアで、サポートされていないデバイスを除外することを宣言できます。

  3. RAM : DDMS / Android Studioを使用して、エミュレーターと実際のデバイスでリアルタイムのメモリ使用量を確認します。アプリのさまざまな機能をトリガーして、使用できるRAMをできるだけ多く使用するようにして、長時間実行し続けます。その最小使用量と最大使用量を見積もりとして取ります。TraceView などの DDMS ツールを使用すると、ヒープやスレッドでのオブジェクトの割り当てを確認したり、メソッドのプロファイリングを行ったりすることもできます。Monkey Toolを長時間実行して、アプリにストレスを与えます。

  4. CPU 速度:アプリが集中的なコンピューティングやデータ変換などを行う場合、そのようなコンピューティング コードでいくつかのタイム スタンプ ログをプログラムすることをお勧めします。デバイスの遅延が大きくなりすぎないように、必要なコンピューティングが十分な時間内に完了するように、CPU 速度を設定してください。また、ビジュアル レンダリングの場合、(ゲームの) 良好なフレーム レートが主な要因です。この場合、実際のデバイスのフレーム レートをベンチマークし、ハイエンドのチップ セットを選択できます。マルチコア デバイスのユーザーを推奨することもできます。

  5. CPU/GPU の互換性: もう 1 つの重要な詳細は、アプリに C/C++ コードがある場合、そのコードは一部の CPU タイプ (MIPS、ARM、または x86) で実行されない可能性があることです。OpenGL ES バージョンと利用可能な拡張機能を使用するアプリについても同様です。デバイスには、異なる CPU/グラフィック チップ セットが搭載されています。

  6. ディスク: インストール後のアプリのサイズを見積もります。アプリの最小ディスク要件は、少なくとも起動できるようにアプリ自体を保存するために必要なスペースであり、作成するキャッシュ、データベース、またはユーザー コンテンツは含まれません。使用上の。

  7. 表示サイズ: レスポンシブで柔軟な UI が常に推奨されますが、アプリは特定の画面サイズでしか使用できない場合があります。したがって、互換性のある画面サイズを考慮することができます。

  8. 制御できないもの:他のアプリ ユーザーが実行する可能性のあるものを制御できないことを覚えておいてください。そのため、アプリがデバイス上でこれほど多くの空きRAM を必要とすることを宣言しても安全です。最良のシナリオを想定して、デバイスには少なくともそれが搭載されていることを宣言します。多くのRAMがインストールされています。たとえば、最大にするとアプリが 200 MB を消費することに気付いたので、要件は 512 MB 以上のデバイスのみになります。また、ユーザーが使用する SD カードのサイズを制御することもできないため、アプリは、ディスクがいっぱいになると機能しないことをユーザーに速やかに通知する必要があります。

最後に、適切なテストは、見積もりを実際のベンチマークに変えるものです。また、見積もりだけではなく、ベンチマークに基づいて要件を設定することをお勧めします。

更新

アプリケーションで使用しているフィールドの数と、携帯電話で取得している許可に応じて、最小メモリ要件を示す Android の API またはクラスはありますか。

  1. API はランタイムを正確に予測できません。コードには多くifの とがありelse、さらにユーザー入力があるため、オブジェクトの作成と実行がどの正確なパスに沿って進むかを予測することはできません。ランタイムは、DDMS などのツールを使用して外部からのみ監視できます。

  2. Apple とは異なり、Android はオープン システムであり、メーカーが自由に選択できるデバイス ハードウェアの可能性は膨大です。それに、デバイスの ROM で行うカスタマイズを追加します。そのすべてを追跡する共通の API はありません。Android API と標準仕様に固執するだけで、隠し API の使用などは避けてください。

于 2013-03-24T15:41:45.457 に答える
3

自分に問いかけるべき質問

1. メモリ要件は? データを処理するために大量のメモリ (物理的ではなく、ヒープ内にある) が必要ですか、それとも最小限ですか? 現在、ほとんどのデバイスには 64 MB のヒープ サイズが付属していますが、これは製造元によって異なります。同じAPIレベルでも違います。最小値を見つけて、その量のヒープ メモリが使用可能であることを確認します。

実行時に消費しているメモリを監視するには、これを確認してください

現在のデバイスで利用可能なヒープメモリの量を調べるには、これこれを確認してください。

Android は Windows とは異なり、すべてのアプリは同じ量のヒープ メモリで開始され、そのデバイス上のすべてのアプリで一定であることを忘れないでください。つまり、アプリはこの使用可能なメモリを超えて拡張することはできません。マニフェストでこのタグを使用して追加のメモリを要求できます android:largeHeap="true"が、この機能は 3.0 より前の OS バージョンでは使用できません。

ほとんどすべてのメモリが他のアプリケーションによって使用されているモバイルの 1 つで、このアプリケーションを試してみました。私のアプリケーションは写真をキャプチャできません。そして、いくつかのアプリケーションを削除すると、アプリケーションは正常に動作します。

Android を実行しているアプリが他のすべてのアプリ側を配置すると、ヒープ サイズによって定義されたメモリがアプリにあることを意味し、OS がより多くのメモリが必要であると判断した場合、またはより多くのメモリを割り当てられなかった場合、それらのプロセスが強制終了されるため、上記の仮定は非常に紛らわしいものです。Android は、現在実行中のタスクに高い優先度を与えます。そのため、アプリを操作している場合、メモリがヒープ サイズよりも少なくなる可能性はほとんどありません。他のアプリで問題が発生する別の理由が考えられます。

2. API 要件は何ですか? 古い API とレベルでは利用できない特別な API を使用している場合、アプリが単にその API バージョンをサポートしないと言うか、その特定の機能をバックポートするかの 2 つのオプションがあります。

3. ハードウェア要件は何ですか? 特殊なソフトウェアまたはハードウェアを使用しているかどうか、その特殊なハードウェアをすべてのデバイスで使用できるかどうかを自問してください。例、NFC、ブルートゥース。

4. ディスプレイの要件は何ですか? このアプリはモバイル専用ですか、それともモバイルとタブレットの両方に対応していますか? タブレットとモバイルの中間に位置する 7 インチはどうでしょうか。

5. ローカリゼーションの要件は何ですか? このアプリは特殊文字セットに依存していますか? 特定のデバイスにこれらの文字がない場合はどうなりますか。

そして、参考までに、あなたが言及したオブジェクトの量は、数 MB 以上を占めるべきではありません。ただし、ビットマップを扱うときは注意してください。これを読む

于 2013-03-25T07:32:49.957 に答える
2

Androidのすべてのプロセスに少なくとも16MBのメモリがあることが保証されているようです。最近のデバイスのほとんどでは、ヒープを24MB以上に増やすことができます。

http://developer.android.com/reference/android/app/ActivityManager.html#getMemoryClass()の説明を参照してください

すべてOS側のメモリ管理であり、http://developer.android.com/guide/components/processes-and-threads.html#Lifecycleで説明されているプロセスとスレッドの優先順位があります。

したがって、アプリがフォアグラウンドにある場合は、カメラからの画像を処理するのに十分なリソースがある可能性があります。

画像をキャプチャするためにどのAPIを使用しますか?

于 2013-03-19T16:07:45.150 に答える
2

@veon が言うように、いくつかの見積もりを行うことができます。ただし、さまざまなコンテキストでどれだけ使用されるかを知りたい場合や、ユーザーが自分の電話で他のアプリの使用状況を知っている必要があるため、常に少し予測できません.

私が理解しているように、あなたが主に提供する必要があるのは明確な文書です。次のように文書化する方が(あなたとすべての人にとって)はるかに簡単かもしれません:

このアプリケーションは、最近のすべての標準的な Android 携帯 (Android バージョン XXX 以降) で実行されます。ただし、他のアプリケーションが実行されている場合、特にメモリを大量に消費するアプリケーションが実行されている場合、パフォーマンスが影響を受ける可能性があります。パフォーマンスに問題がある場合は、メモリとプロセスの負荷が高い他のアプリケーションを削除してください。それを判断する助けが必要な場合は、 ZDboxなどのアプリケーションを使用してください。

参考までに、ZDbox へのリンクはありません。例として使用しているだけです。

于 2013-03-20T12:24:54.950 に答える
2

アプリが特定のハードウェアで動作するかどうかを確認する最善の方法は、そのハードウェアでテストすることです。友達に古い Android スマートフォンを持っていないか聞いて、アプリをテストしてみましょう。

最悪の場合、メモリが異なる複数の Android 仮想デバイスを作成します。ただし、Android エミュレーターは、ハードウェア アクセラレーションを使用しても、残念なほど遅いことに注意してください。

于 2013-03-20T04:55:38.977 に答える
1

そのため、アプリケーションを実行するための最小メモリ要件を知りたいのです。

little eye labsの監視ツールを使用します。消費電力、メモリ消費、CPU 消費、アプリのネットワーク アクティビティなどを監視します。30 日間の試用版をダウンロードできます。これにより、アプリが消費するリソースを正確に把握できます。ただし、アプリは通常、一連のハードウェア要件でリリースされることはありません。メモリ/バッテリーの使用量をチェックしておけば、問題はありません。

メモリ不足については、カメラが撮影した写真を表示するときに発生しますか、それともカメラ自体がアプリをダウンさせますか? カメラが保持しているリソースを解放していますか? この質問を見てください - Android camera out of memory exception

于 2013-03-24T16:00:18.733 に答える