The Android Developer Challenge is back! Submit your idea before December 2.

デバイス上でシステム トレースをキャプチャする

Android 9(API レベル 28)以降を搭載しているデバイスには、「システム トレース」と呼ばれるシステムレベルのアプリが組み込まれています。このアプリは、systrace コマンドライン ユーティリティと似ていますが、デバイスを ADB 経由で接続する必要はなく、直接テストデバイスからトレースを記録できます。アプリを利用することで、トレース結果を開発チームと共有することができます。

起動が遅い場合や、遷移が遅い場合、UI ジャンクが発生する場合など、アプリ内に存在するパフォーマンス関連のバグに対処する際、トレースを記録しておくと特に役立ちます。

システム トレースを記録する

システム トレース アプリを使用すると、[クイック設定] タイルやアプリ内のメニューを使用してシステム トレースを記録できます。以下のセクションでは、各インターフェースを使用して記録プロセスを完了する方法について説明します。

[クイック設定] タイルを使用して記録する

通常、オンデバイス システム トレース プロセスを完了する方法としては、[クイック設定] タイルを使用するのが最も簡単です。

タイルをセットアップする

図 2: システム トレース アプリの [[クイック設定] タイルの表示] スイッチ

テストデバイス上で初めてシステム トレースを使用する場合、あるいは、デバイスのクイック設定パネル(図 1)に [システム トレース] タイルが表示されていない場合は、次のセットアップ手順を完了します。

  1. 開発者向けオプションを有効にしていない場合は、有効にします
  2. [開発者向けオプション] 設定画面を開きます。
  3. [デバッグ] セクションで、[システム トレース] を選択します。システム トレース アプリが開き、アプリメニューが表示されます。
  4. アプリメニューから、[[クイック設定] タイルの表示] をオンにします(図 2 を参照)。[システム トレース] タイルがクイック設定パネルに追加されます(図 1 を参照)。

    図 1: クイック設定パネルの [システム トレース] タイル

    注: デフォルトでは、[システム トレース] タイルは、クイック設定パネル内の 1 番目のタイルとして追加されます。タイルを別の位置に表示したい場合は、パネルの編集モードを使用してタイルを移動します。

システム トレース記録を完了する

クイック設定パネルを使用してシステム トレースを記録する手順は次のとおりです。

  1. [システム トレース] タイルをタップします。[トレースを記録] というラベルが表示されます。タイルが有効になり、システムが現在トレースを記録中であることを通知する永続通知が表示されます(図 3 を参照)。

    「トレースを記録しています。タップするとトレースを停止します」というメッセージを含む通知
    図 3: オンデバイス システム トレースが開始された後に表示される永続通知
  2. 検査するアクションをアプリで実行します。

  3. アクションを完了したら、クイック設定パネルの [システム トレース] タイルか、[システム トレース] 通知をタップして、トレースを停止します。

    「トレースを保存しています」というメッセージを含む新しい通知が表示されます。保存が完了すると、通知が消去されます。そして、トレースが保存されたことを知らせ、システム トレースを共有する準備が整っているか尋ねる 3 番目の通知が表示されます(図 4 を参照)。

    「トレースを保存しました。タップするとトレースを共有します」というメッセージを含む通知
    図 4: システムがトレース記録の保存を終了した後に表示される永続通知

アプリメニューを使用して記録する

アプリメニューを使用すると、システム トレースに関する各種の詳細設定を行い、システム トレースの開始と停止を切り替えることができます。

システム トレース アプリメニューを使用してシステム トレースを記録する手順は次のとおりです。

  1. 開発者向けオプションを有効にしていない場合は、有効にします
  2. [開発者向けオプション] 設定画面を開きます。[デバッグ] セクションで、[システム トレース] を選択します。システム トレース アプリが開きます。

    あるいは、[システム トレース] タイルをセットアップ済みの場合は、タイルを長押しすることで、システム トレース アプリを起動できます。

  3. 必要に応じて、トレースするシステム呼び出しやセンサー呼び出しの [カテゴリ] を選択して、[バッファサイズ](単位: KB)を選択します。テストするユースケースに対応するカテゴリを選択してください。たとえば、Bluetooth の動作をテストする場合は、[オーディオ] カテゴリを選択します。

    図 5: システム トレース アプリの [トレースを記録] スイッチ
  4. 図 5 でハイライト表示されている [トレースを記録] スイッチをオンにします。タイルが有効になり、システムが現在トレースを記録中であることを通知する永続通知が表示されます(図 3 を参照)。

  5. 検査するアクションをアプリで実行します。

  6. アクションを完了したら、[トレースを記録] スイッチをオフにして、トレースを停止します。

    「トレースを保存しています」というメッセージを含む新しい通知が表示されます。保存が完了すると、通知が消去されます。そして、トレースが保存されたことを知らせ、システム トレースを共有する準備が整っているか尋ねる 3 番目の通知が表示されます(図 4 を参照)。

システム トレースを共有する

システム トレース アプリを使用すると、複数のワークフローの一部としてシステム トレース結果を共有することができます。

メッセージとして共有する

システム トレースを使用すると、収集したトレースをデバイス上の他のアプリと共有できます。これにより、デバイスを開発マシンに接続することなく、メールやバグ トラッキング アプリを通じて開発チームにトレースを送信できます。

システム トレースの記録が完了したら、デバイスに表示される通知をタップします(図 4 を参照)。プラットフォームのインテント選択ツールが表示され、任意のメッセージ アプリを使用してトレースを共有することができます。

ADB を使用してレポートをダウンロードする

必要に応じて、ADB を使用してデバイスからシステム トレースを抽出することもできます。トレースを記録したデバイスを開発マシンに接続して、ターミナル ウィンドウで次のコマンドを実行します。

    cd /path-to-traces-on-my-dev-machine && \
      adb pull /data/local/traces/ .

HTML レポートを作成する

メッセージや ADB 経由でトレースを共有する際、レポート自体は .ctrace ファイルに格納されます。このファイルを使用することで、トレースの HTML レポートを生成できます。生成するには、ターミナル ウィンドウで次のコマンドを実行します。

    cd /path-to-traces-on-my-dev-machine && \
      systrace --from-file trace-file-name.ctrace

systrace コマンドライン プログラムをまだ持っていない場合は、GitHub の Catapult プロジェクトからダウンロードするか、Android オープンソース プロジェクトから直接ダウンロードすることができます。