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