Android 9(API レベル 28)以降を搭載しているデバイスには、「システム トレース」と呼ばれるシステムレベルのアプリが組み込まれています。このアプリは、systrace
コマンドライン ユーティリティと似ていますが、デバイスを ADB 経由で接続する必要はなく、直接テストデバイスからトレースを記録できます。アプリを利用することで、トレース結果を開発チームと共有できます。
起動が遅い場合や、遷移が遅い場合、UI ジャンクが発生する場合など、アプリ内に存在するパフォーマンス関連のバグに対処する際、トレースを記録しておくと特に役立ちます。
システム トレースを記録する
システム トレース アプリを使用すると、[クイック設定] タイルやアプリ内のメニューを使用してシステム トレースを記録できます。以下のセクションでは、各インターフェースを使用して記録プロセスを完了する方法について説明します。
[クイック設定] タイルを使用して記録する
通常、オンデバイス システム トレース プロセスを完了する方法としては、[クイック設定] タイルを使用するのが最も簡単です。
タイルをセットアップする

テストデバイス上で初めてシステム トレースを使用する場合、あるいは、デバイスのクイック設定パネル(図 1)に [システム トレース] タイルが表示されていない場合は、次のセットアップ手順を完了します。
- 開発者向けオプションを有効にしていない場合は、有効にします。
- [開発者向けオプション] 設定画面を開きます。
- [デバッグ] セクションで、[システム トレース] を選択します。システム トレースアプリが開き、アプリメニューが表示されます。
アプリメニューから、[[クイック設定] タイルの表示] をオンにします(図 2 を参照)。 [システム トレース] タイルがクイック設定パネルに追加されます(図 1 を参照)。
図 1. クイック設定パネルの [システム トレース] タイル 注: デフォルトでは、[システム トレース] タイルは、クイック設定パネル内の 1 番目のタイルとして追加されます。タイルを別の位置に表示したい場合は、パネルの編集モードを使用してタイルを移動します。
システム トレース記録を完了する
クイック設定パネルを使用してシステム トレースを記録する手順は次のとおりです。
[システム トレース] タイルをタップします。[トレースを記録] というラベルが表示されます。タイルが有効になり、システムが現在トレースを記録中であることを通知する永続通知が表示されます(図 3 を参照)。
図 3. オンデバイス システム トレースが開始された後に表示される永続通知 検査するアクションをアプリで実行します。
アクションを完了したら、クイック設定パネルの [システム トレース] タイルか、[システム トレース] 通知をタップして、トレースを停止します。
「トレースを保存しています」というメッセージを含む新しい通知が表示されます。保存が完了すると、通知が消去されます。そして、トレースが保存されたことを知らせ、システム トレースを共有する準備が整っているか尋ねる 3 番目の通知が表示されます(図 4 を参照)。
図 4. システムがトレース記録の保存を終了した後に表示される永続通知
アプリメニューを使用して記録する
アプリメニューを使用すると、システム トレースに関する各種の詳細設定を行い、システム トレースの開始と停止を切り替えることができます。
システム トレースアプリ メニューを使用してシステム トレースを記録する手順は次のとおりです。
- 開発者向けオプションを有効にしていない場合は、有効にします。
[開発者向けオプション] 設定画面を開きます。[デバッグ] セクションで、[システム トレース] を選択します。システム トレースアプリが開きます。
あるいは、[システム トレース] タイルをセットアップ済みの場合は、タイルを長押しすることで、システム トレースアプリを起動できます。
デバッグが有効になっているアプリをシステム トレースに含めるには、[デバッグ可能なアプリをトレース] が選択されていることを確認します。
必要に応じて、トレースするシステム呼び出しやセンサー呼び出しの [カテゴリ] を選択して、[CPU あたりのバッファサイズ](単位: KB)を選択します。テストするユースケースに対応するカテゴリを選択してください。たとえば、Bluetooth の動作をテストする場合は [オーディオ] カテゴリを、ヒープ割り当ての場合は [メモリ] カテゴリ選択します。
図 5. システム トレースアプリの [トレースを記録] スイッチ [長期トレース] を選択すると、トレースをデバイスのストレージに継続的に保存するオプションを有効にできます。このオプションでは、[最長トレースサイズ] と [最長トレース期間] の上限を設定する必要があります。
図 5 でハイライト表示されている [トレースを記録] スイッチをオンにします。タイルが有効になり、システムが現在トレースを記録中であることを通知する永続通知が表示されます(図 3 を参照)。
検査するアクションをアプリで実行します。
アクションを完了したら、[トレースを記録] スイッチをオフにして、トレースを停止します。
「トレースを保存しています」というメッセージを含む新しい通知が表示されます。保存が完了すると、通知が消去されます。そして、トレースが保存されたことを知らせ、システム トレースを共有する準備が整っているか尋ねる 3 番目の通知が表示されます(図 4 を参照)。
システム トレースを共有する
システム トレースアプリを使用すると、複数のワークフローの一部としてシステム トレース結果を共有できます。Android 10(API レベル 29)以降を搭載したデバイスでは、トレース ファイルは .perfetto-trace
ファイル名拡張子で保存され、Perfetto UI で開くことができます。以前のバージョンの Android を搭載したデバイスでは、トレース ファイルは Systrace 形式を示す .ctrace
ファイル名拡張子で保存されます。
メッセージとして共有する
システム トレースを使用すると、収集したトレースをデバイス上の他のアプリと共有できます。これにより、デバイスを開発マシンに接続することなく、メールやバグ トラッキング アプリを通じて開発チームにトレースを送信できます。
システム トレースの記録が完了したら、デバイスに表示される通知をタップします(図 4 を参照)。プラットフォームのインテント選択ツールが表示され、任意のメッセージ アプリを使用してトレースを共有できます。
ファイルアプリから共有する
Android 10(API レベル 29)を搭載したデバイスでは、ファイルアプリにトレースが表示されます。必要に応じて、このアプリからトレースを共有できます。
ADB を使用してレポートをダウンロードする
必要に応じて、ADB を使用してデバイスからシステム トレースを抽出することもできます。トレースを記録したデバイスを開発マシンに接続して、ターミナル ウィンドウで次のコマンドを実行します。
cd /path-to-traces-on-my-dev-machine && \ adb pull /data/local/traces/ .
トレース形式間の変換
Perfetto トレース ファイルは Systrace 形式に変換できます。詳細については、トレース形式間の変換をご覧ください。
HTML レポートを作成する
トレースを共有する場合、レポート自体は .perfetto-trace
ファイル(Android 10 以降を搭載したデバイス)または .ctrace
ファイル(他のすべてのバージョン)に存在します。
ウェブベースの UI またはコマンドラインを使用して、トレース ファイルから HTML レポートを作成します。
ウェブベースの UI
Perfetto UI を使用してトレース ファイルを開き、レポートを生成します。
Perfetto ファイルの場合は、[Open trace file] をクリックします。Systrace ファイルの場合は、[Open with legacy UI] をクリックします。従来の UI のデザインは、Systrace レポートと同じです。
コマンドライン
ターミナル ウィンドウで次のコマンドを実行し、トレース ファイルから HTML レポートを生成します。
cd /path-to-traces-on-my-dev-machine && \ systrace --from-file trace-file-name{.ctrace | .perfetto-trace}
systrace
コマンドライン プログラムをまだインストールしていない場合は、GitHub の Catapult プロジェクトから、または Android オープンソース プロジェクトから直接ダウンロードできます。