Menelusuri Transisi Jendela

WinScope menyediakan infrastruktur dan alat untuk merekam dan menganalisis status WindowManager dan SurfaceFlinger selama dan setelah transisi jendela. WinScope merekam semua status layanan sistem terkait ke file jejak, yang dapat Anda gunakan untuk memutar ulang dan melangkah melalui transisi.

Menangkap jejak

Tangkap jejak melalui Pengaturan Cepat atau adb pada perangkat yang menjalankan userdebug atau eng build.

Pengaturan cepat

Untuk menangkap jejak dari Pengaturan Cepat :

  1. Aktifkan opsi pengembang .
  2. Buka Opsi pengembang > Ubin pengembang setelan cepat .
  3. Aktifkan Pelacakan WinScope .
  4. Buka Pengaturan Cepat .
  5. Ketuk Winscope Trace untuk mengaktifkan pelacakan.
  6. Jalankan transisi jendela pada perangkat.
  7. Setelah Anda selesai, buka Pengaturan Cepat dan ketuk Winscope Trace untuk menonaktifkan pelacakan.

Jejak ditulis ke /data/misc/wmtrace/wm_trace.winscope dan /data/misc/wmtrace/layers_trace.winscope . Jejak juga disertakan dalam laporan bug.

adb

Saat menangkap jejak melalui adb , tangkap jejak WindowManager dan SurfaceFlinger secara terpisah.

Jejak WindowManager

Untuk menangkap jejak WindowManager:

  1. Aktifkan jejak:
    adb shell cmd window tracing start
  2. Nonaktifkan jejak:
    adb shell cmd window tracing stop
  3. Ambil file jejak:
    adb pull /data/misc/wmtrace/wm_trace.winscope wm_trace.winscope

Anda dapat secara opsional mengubah konfigurasi log default dari berbagai pengaturan untuk pelacakan WindowManager:

  • Atur frekuensi log (untuk transaksi atau frame):
    adb shell cmd window tracing [frame | transaction]
  • Konfigurasikan level verbose untuk entri log:
    adb shell cmd window tracing level [all | trim | critical]
  • Atur ukuran buffer maksimum (dalam KB):
    adb shell cmd window tracing size size-value
  • Buang status buffer, level log, kapasitas yang tersisa, dan jumlah elemen:
    adb shell cmd window tracing status

Jejak SurfaceFlinger

Untuk menangkap jejak SurfaceFlinger:

  1. Aktifkan jejak:
    adb shell su root service call SurfaceFlinger 1025 i32 1
  2. Nonaktifkan jejak:
    adb shell su root service call SurfaceFlinger 1025 i32 0
  3. Ambil file jejak:
    adb pull /data/misc/wmtrace/layers_trace.winscope layers_trace.winscope

Anda dapat secara opsional mengubah konfigurasi log default dari berbagai pengaturan untuk pelacakan SurfaceFlinger:

  • Atur ukuran buffer maksimum (dalam KB):
    adb shell su root service call SurfaceFlinger 1029 i32 size-value
  • Konfigurasikan level verbose untuk entri log:
    adb shell su root service call SurfaceFlinger 1033 i32 flags

Transaksi

Untuk menangkap transaksi:

  1. Aktifkan jejak:
    adb shell su root service call SurfaceFlinger 1020 i32 1
  2. Nonaktifkan jejak:
    adb shell su root service call SurfaceFlinger 1020 i32 0
  3. Ambil file jejak:
    adb pull /data/misc/wmtrace/transaction_trace.winscope

File penggabungan transaksi lainnya tersedia di `/data/misc/wmtrace/` dengan penamaan `transaction_merges_*.winscope`.

Menghasilkan dump negara

WinScope membaca snapshot status WindowManager dan SurfaceFlinger dari laporan bug. Laporan bug menyimpan status sebagai file proto terpisah di dalam folder proto . Untuk menghasilkan dump status menggunakan adb , jalankan perintah berikut.

Manajer Jendela

adb exec-out dumpsys window --proto > window_dump.winscope

SurfaceFlinger

adb exec-out dumpsys SurfaceFlinger --proto > sf_dump.winscope

Menganalisis jejak

Untuk menganalisis file jejak, gunakan aplikasi web WinScope. Bangun aplikasi dari sumbernya atau buka dari direktori bawaan.

  1. Unduh artefak bawaan dari repositori sumber Android:
    curl 'https://android.googlesource.com/platform/prebuilts/misc/+/master/common/winscope/winscope.html?format=TEXT' | base64 -d > winscope.html
  2. Buka artefak yang diunduh di browser web.
  3. Setelah WinScope terbuka, pilih BUKA FILE untuk memuat file jejak.

Menggunakan WinScope

Setelah membuka file jejak di WinScope, Anda dapat menganalisis jejak dalam beberapa cara.

Tangkapan Layar WinScope
Gambar 1. Menganalisis jejak di WinScope
  • Timeline — Menampilkan urutan peristiwa dalam jejak. Gunakan tombol panah atau klik setiap entri untuk menavigasi garis waktu.
  • Layar — Menyediakan representasi visual dari setiap jendela yang terlihat di layar. Klik sebuah jendela untuk memilih jendela sumber dalam hierarki.
  • Perekaman layar — Menampilkan layar perangkat yang disinkronkan dengan jejak. Navigasi bersama dengan timeline.
  • Hierarchy — Mewakili setiap jendela yang diketahui sistem. Beberapa jendela tidak berisi buffer, tetapi ada untuk menetapkan kebijakan pada anak-anak jendela. Jendela yang terlihat ditandai dengan ikon V
  • Properti — Menampilkan informasi status untuk entri yang dipilih dalam hierarki.