ローカルで Winscope を実行するか、ウェブサーバーから Winscope にアクセスします。
Winscope を使用してトレースをキャプチャし、ローカルでの開発とデバッグに使用できます。Winscope は adb を使用しており、USB または Wi-Fi 経由でのデバイス接続に対応しています。
Winscope を起動すると、[Collect Traces] 画面が表示されます。
デバイスの接続
Winscope でのデバイスの接続には、Winscope プロキシまたはウェブデバイス プロキシを使用できます。デフォルトでは Winscope のホームページに Winscope プロキシの接続をセットアップする UI が表示されます。
トレースのキャプチャを開始するには、以下のデバイス接続方法のどちらかを選択してください。
Winscope プロキシのセットアップ
Winscope プロキシをセットアップする手順は次のとおりです。
ホームページの [Collect Traces] の [Select connection type] プルダウンから [Winscope Proxy] を選択します。
図 1. Winscope プロキシを使用してトレースをキャプチャする
Winscope ADB Connect プロキシを起動し、次のコマンドを実行してブラウザから直接トレースをキャプチャします。
python3 $ANDROID_BUILD_TOP/development/tools/winscope/src/adb/winscope_proxy.py
実行後に Winscope プロキシ トークンがターミナルに表示されます。
Winscope ADB Connect プロキシを起動すると、画面は次のように変わります。プロキシへの最初の接続を確立するには、ステップ 3 の Winscope プロキシ トークンを入力し、[Connect] をクリックします。
図 2. Winscope プロキシに接続する
ウェブデバイス プロキシのセットアップ
ウェブデバイス プロキシをセットアップする手順は次のとおりです。
ホームページの [Collect Traces] の [Select connection type] プルダウンから [Web Device Proxy] を選択します。
図 3. ウェブデバイス プロキシを使用してトレースをキャプチャする
使用するマシンにウェブデバイス プロキシ デーモンがない場合は、[Install] をクリックするか、インストーラを起動します。
ダイアログでウェブデバイス プロキシへのオリジン アクセスを承認します。
図 4. オリジン アクセスを承認する
新しいデバイスに初めて接続するたびに、アクセスを承認します。承認するダイアログが自動的に表示されない場合は、デバイスの横にある
lock_open
アイコンをクリックします。図 5. デバイスを承認する
トレース
トレースを収集する手順は次のとおりです。
接続時にキャプチャ プロセスを開始するには、ターゲットを設定し、設定を構成します。その後、[Start trace] をクリックしてキャプチャを開始します。
図 6. Winscope でトレースを収集する
キャプチャを停止するには、[End trace] をクリックします。
図 7. Winscope でトレースを終了する
トレースのオプション
このセクションでは、トレースのタイプのオプションについて説明します。
画面の録画
Winscope では、複数のディスプレイの画面を録画できます。メニューから画面録画するディスプレイを選択します。ディスプレイを選択しなかった場合、アクティブなディスプレイがデフォルトで録画されます。
SurfaceFlinger
バッファサイズ: SurfaceFlinger トレースのメモリ内リングバッファのサイズを調整します。バッファが大きいほどより多くのデータを収集できますが、メモリ使用量は増加します。
入力: サーフェスに入力データがある場合、入力ウィンドウの詳細を追跡します。
合成: 合成タイプと表示領域をトレースします。
メタデータ: オフスクリーン レイヤを含む追加のサーフェス メタデータをトレースします。
HWC: 構造化されていない Hardware Composer の追加のメタデータをトレースします。
バッファのトレース: サーフェス上のバッファの変更をすべてトレースするよう SurfaceFlinger を構成します。デフォルトでは、SurfaceFlinger はジオメトリが変更された場合のみ新しい状態をトレースします。
仮想ディスプレイ: トレース内の仮想ディスプレイのレイヤを含めます。
WindowManager
- バッファサイズ: WindowManager トレースのメモリ内リングバッファのサイズを調整します。バッファが大きいほどより多くのデータを収集できますが、メモリ使用量は増加します。
トレースのタイプ: 状態を収集する頻度を定義します。
- フレーム: このモードでは、WindowManager はフレームごとに 1 つの状態をダンプし、WindowManager の有効な状態のみがキャプチャされるようにします。このモードではパフォーマンス オーバーヘッドを最小限に抑えられます。
- トランザクション: このモードでは、トランザクションが commit されるたびに WindowManager の状態が記録されます。フレーム内で複数のトランザクションを commit できるため、フレーム中に WindowManager の中間状態のデバッグが可能になります。ただし、このモードではフレームモードと比べてパフォーマンス オーバーヘッドが増加します。
トレースレベル: WindowManager トレースの詳細度を決定します。
- 詳細: 各ウィンドウについてウィンドウと構成情報すべてが含まれます。このモードではメモリ使用量とパフォーマンス オーバーヘッドが最も大きくなります。
- デバッグ: すべてのウィンドウの情報が含まれますが、オーバーライド構成がリクエストされている場合、ウィンドウ構成のみをログに記録します。
- 重大: デバッグモードと同じ情報が含まれますが、可視ウィンドウのみが含まれます。メモリ使用量とパフォーマンス オーバーヘッドはこのモードが最小となります。
ダンプ
Winscope を使用して状態をダンプするには、ホームページの [Collect Traces] で [Dump] タブを選択し、[Dump state] をクリックします。
図 8. Winscope で状態をダンプする
スクリーンショットの構成
Winscope では、複数のディスプレイのスクリーンショットを取得できます。メニューからスクリーンショットするディスプレイを選択します。ディスプレイを選択しなかった場合、アクティブなディスプレイのスクリーンショットが収集されます。