lightbulb_outline Help shape the future of the Google Play Console, Android Studio, and Firebase. Start survey

Android Profiler でアプリのパフォーマンスを測定する

Android Studio 3.0 では、[Android Monitor] ツールが新しい [Android Profiler] ウィンドウに置き換えられています。 これらの新しいプロファイリング ツールは、アプリの CPU、メモリ、およびネットワーク アクティビティのリアルタイム データを提供します。 サンプルを基にしたメソッド トレースを実行して、コードの実行時間の測定、ヒープ ダンプの取得、メモリ割り当ての表示、ネットワークで送信されたファイルの詳細の検査を行えます。

[Android Profiler] ウィンドウを開くには、次の手順を実行します。

  1. [View] > [Tool Windows] > [Android Profiler] をクリックします(ツールバーの [Android Profiler] をクリックすることもできます)。
  2. 図 1 に示すように、[Android Profiler] ウィンドウの上部で、プロファイリングする端末 1 とアプリプロセス 2 を選択します。 USB 経由で端末に接続しているが、端末がリストに表示されない場合は、USB デバッグを有効にしていることを確認します。

    Android Emulator またはルート権限を取得された端末を使用している場合、Android Profiler は、デバッグできない可能性があるプロセスも含め、実行中のすべてのプロセスの一覧を表示します。 デバッグ可能なアプリを起動すると、そのプロセスがデフォルトで選択されます。

ここで、Android Profiler は共有タイムライン ビュー(図 1)を表示します。このビューには、CPU、メモリ、およびネットワーク使用率をリアルタイム グラフで示したタイムラインが含まれます。 また、このウィンドウには、タイムラインのズーム コントロール 3、リアルタイム アップデートにジャンプするボタン 4、activity の状態、ユーザー入力イベント、画面の回転イベントを示すイベント タイムライン 5 が含まれます。

Android Profiler を開始すると、端末を切断するか、[Close] をクリックするまで、プロファイリング データの収集が続けられます。

図 1 Android Profiler の共有タイムライン ビュー

この共有タイムライン ビューには、タイムライン グラフのみが表示されます。 詳細なプロファイリング ツールにアクセスするには、調べたいパフォーマンス データに対応するグラフをクリックします。 たとえば、ヒープの検査とメモリ割り当てのトラッキングを行うツールにアクセスするには、[MEMORY] グラフをクリックします。 以下のリンク先のページには、対応する各プロファイラ ウィンドウに関する詳細が記載されています。

ただし、すべてのプロファイリング データがデフォルトで表示されるわけではありません。 「Advanced profiling is unavailable for the selected process」というメッセージが表示された場合は、実行構成で詳細なプロファイリングを有効にする必要があります。

各プロファイリング ツールの詳細については、次のドキュメントをご覧ください。

詳細なプロファイリングを有効にする

Android Studio では、詳細なプロファイリング データを表示するために、コンパイル済みのアプリにモニタリング ロジックを挿入する必要があります。 詳細なプロファイリングでは、次のような機能が提供されます。

  • すべてのプロファイラ ウィンドウに表示されるイベント タイムライン
  • Memory Profiler に表示される割り当て済みオブジェクトの数
  • Memory Profiler に表示されるガベージ コレクション イベント
  • Network Profiler に表示される送信済みファイルの詳細

詳細なプロファイリングを有効にするには、次の手順を実行します。

  1. [Run] > [Edit Configurations] を選択します。
  2. 左側のパネルでアプリ モジュールを選択します。
  3. [Profiling] タブをクリックしてから、[Enable advanced profiling] をオンにします。

ここで、アプリを再びビルドして実行し、プロファイリング機能の完全なセットにアクセスします。 ただし、詳細なプロファイリングはビルドの速度低下を招くため、アプリのプロファイリングを開始するときにのみ有効にする必要があることに注意してください。

注: 詳細なプロファイリングは、ネイティブ コードに対して使用できません。 アプリが純粋なネイティブ アプリである(Java Activity クラスがない)場合は、詳細なプロファイリング機能が使用できません。 アプリで JNI を使用している場合は、イベント タイムライン、GC イベント、Java で割り当てられたオブジェクト、Java ベースのネットワーク アクティビティなど、いくつかの詳細なプロファイリング機能が利用できますが、ネイティブ ベースの割り当てとネットワーク アクティビティを検出することができません。