ProfilingManager API を使用すると、Android 15(API レベル 35)以降を搭載した本番環境デバイスから、システム トレースや Java ヒープダンプなどの実際のユーザーのパフォーマンス プロファイルを収集できます。2 つの収集メカニズムをサポートしています。1 つは、アプリがプロファイルの収集を開始から停止まで制御するアプリ主導のプロファイル(Android 15 以降)、もう 1 つは、Android 16(API レベル 36)以降で、関心のあるイベントに応じてシステムがキャプチャを処理するトリガーベースのプロファイルです。
このガイドの内容は次のとおりです。
- プロファイルのキャプチャ: アプリ駆動型のプロファイル記録を開始および停止する方法と、トリガーベースのプロファイル記録に登録する方法。
- プロファイルの取得とアップロード:
adbを使用してローカルでプロファイルを取得する方法、またはWorkManagerを使用してバックグラウンドでプロファイルをアップロードする方法。 - プロファイルを分析する: Perfetto UI でプロファイルを可視化する方法、PerfettoSQL でプロファイルをクエリする方法、トレースを一括分析する方法、AI でプロファイルを分析する方法。
- デバッグのケーススタディ:
ProfilingManagerをエンドツーエンドで適用して ANR をデバッグする方法と OOM クラッシュをデバッグする方法。 - レート制限と収集動作: 本番環境でのレート制限と収集動作を理解する方法。
- ローカル デバッグ: ローカル プロファイリング用のデバッグ コマンドの使用方法。
サポートされているプロファイル タイプ
ProfilingManager は、アプリの特定のパフォーマンスの問題をターゲットにできるように、いくつかのタイプのプロファイルの収集をサポートしています。プラットフォーム API を使用して直接リクエストを構成することも、AndroidX Core ビルダーを使用することもできます。
- システム トレース:
PROFILING_TYPE_SYSTEM_TRACEまたはSystemTraceRequestBuilderを使用してキャプチャされます。- ジャンクの診断、レイテンシの分析、一般的なパフォーマンスのデバッグに役立ちます。
- Java ヒープダンプ:
PROFILING_TYPE_JAVA_HEAP_DUMPまたはJavaHeapDumpRequestBuilderを使用してキャプチャされます。- メモリリークの検出とメモリの最適化のために、アプリの Java ヒープ オブジェクト グラフとサイズのスナップショットをキャプチャします。
- ヒープ プロファイル:
PROFILING_TYPE_HEAP_PROFILEまたはHeapProfileRequestBuilderを使用してキャプチャされます。- ネイティブ(または必要に応じて Java)メモリ割り当てを時系列で追跡して、メモリ使用量の最適化を支援します。
- スタック サンプリング:
PROFILING_TYPE_STACK_SAMPLINGまたはStackSamplingRequestBuilderを使用してキャプチャされます。- スレッドのコールスタックをサンプリングして、コード実行を把握し、CPU 使用率を分析できるようにします。
ProfilingManager を AI エージェントと統合する
AI コーディング エージェントを使用して、ProfilingManager をアプリに統合できます。たとえば、AI コーディング エージェントで次のプロンプトを実行して、アプリケーション応答なし(ANR)トリガーの収集を設定します。</path/to/codebase> はアプリのパスに置き換えます。
Read https://developer.android.com/topic/performance/tracing/profiling-manager/trigger-based-capture
and https://developer.android.com/topic/performance/tracing/profiling-manager/upload-worker
and integrate ProfilingManager ANR trigger collection (TRIGGER_TYPE_ANR) into my
app at </path/to/codebase>, including registering the result listener after app
startup completes and scheduling a WorkManager upload job when a profile is
received.
このプロンプトを調整して、他のシステム トリガー(TRIGGER_TYPE_OOM など)を設定したり、アプリ駆動型プロファイリング ガイドを使用してアプリ駆動型プロファイル キャプチャを構成したりできます。統合後、ローカル プロファイリング用のデバッグ コマンドを使用して設定をローカルでテストし、AI エージェントを使用して収集されたプロファイルを分析します。