Winscope を使用してウィンドウ遷移をトレースする

Winscope は、アニメーションや遷移の最中および終了後における複数のシステム サービスの状態を記録、リプレイ、分析できるウェブツールです。Winscope は、すべての関連するシステム サービスの状態をトレース ファイルに記録します。トレース ファイルと Winscope UI を使用すると、遷移をリプレイ、ステップ実行、デバッグすることで、画面録画の有無にかかわらず、各アニメーション フレーム向けのこうしたサービスの状態を調べることができます。

サポートされているトレース

Winscope は、さまざまなトレースやシステム サービスの状態のシーケンスを収集して視覚的に表示する機能を備えています。これらのトレースは、低オーバーヘッドから高詳細まで、特定のユースケースに合わせて構成できます。Winscope では、次のトレースがサポートされています。

  • EventLog: EventLog を使用してシステム診断イベント レコードを収集します。Winscope では、この情報は CUJ マーキングの識別と表示にのみ使用されます。
  • IME: IMS、IMMS、IME クライアントなど、入力メソッド エディタ(IME)パイプラインのイベントをトレースします。
  • 入力: 入力イベント パイプラインのさまざまな部分から入力イベントをトレースします。
  • ProtoLog: システム サービスから ProtoLog メッセージを収集し、クライアント プロセスで実行されているシステム サービスのコードを収集します。
  • 画面の録画: トレースとともに画面の録画を収集します。
  • シェルの遷移: ウィンドウとアクティビティの遷移システムの詳細を記録します。
  • SurfaceFlinger: 位置、バッファ、合成など、サーフェス(レイヤ)に関する情報を含む SurfaceFlinger トレースを収集します。
  • トランザクション: コンポジションに SurfaceControl を使用して、SurfaceFlinger が受信した一連のアトミック変更をトレースします。
  • ViewCapture: ViewCapture をサポートするシステム ウィンドウ(システム UI やランチャーなど)のすべてのビューのさまざまなプロパティをキャプチャします。
  • Window Manager: 入力イベントやフォーカス イベント、画面の向き、遷移、アニメーション、配置、変換など、ウィンドウに関する詳細を含む Window Manager の状態をトレースします。

サポートされているダンプ

Winscope は、ユーザーが定義した特定の時点で取得されたデバイスの状態のスナップショットである状態ダンプを集めて表示できます。デバイスの使用中に継続的に収集され、パフォーマンスに影響する可能性があるトレースとは異なり、ダンプはこれらのユーザー定義のタイミングでのみ取得されるため、パフォーマンスと詳細情報が損なわれることはありません。これにより、特定の時点でのデバイスの状態をより集中的に効率的に分析できます。Winscope では、次のダンプをサポートしています。

  • Window Manager: 単一の Window Manager の状態をダンプします。
  • SurfaceFlinger: 単一の SurfaceFlinger スナップショットをダンプします。
  • スクリーンショット: ダンプとともにスクリーンショットを収集します。

Winscope のビルドと実行については、Winscope を実行するをご覧ください。

トレースの収集については、トレースをキャプチャするをご覧ください。

Winscope ウェブ UI を使用してトレースを読み込む方法については、トレースを読み込むをご覧ください。

トレースの分析については、トレースを分析するをご覧ください。