Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.
Halaman ini diterjemahkan oleh Cloud Translation API.
Switch to English

Tracing Window Transitions

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

Menangkap jejak

Rekam jejak melalui Setelan Cepat atau adb pada perangkat yang menjalankan userdebug atau build eng.

Pengaturan cepat

Untuk menangkap jejak dari Pengaturan Cepat :

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

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

adb

Saat merekam jejak melalui adb , rekam jejak WindowManager dan SurfaceFlinger secara terpisah.

Jejak WindowManager

Untuk merekam 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.pb wm_trace.pb

Anda juga dapat mengubah konfigurasi log default dari berbagai pengaturan untuk jejak WindowManager:

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

Jejak SurfaceFlinger

Untuk merekam jejak SurfaceFlinger:

  1. Aktifkan pelacakan:
    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.pb layers_trace.pb

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

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

Menghasilkan dump negara

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

WindowManager

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

SurfaceFlinger

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

Menganalisis jejak

Untuk menganalisis file jejak, gunakan aplikasi web WinScope. Bangun aplikasi dapat dari sumber atau membukanya dari direktori prebuilt.

  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 OPEN FILE untuk memuat file pelacakan.

Menggunakan WinScope

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

Screenshot WinScope
Gambar 1. Menganalisis jejak di WinScope
  • Timeline - Menampilkan urutan kejadian dalam jejak. Gunakan tombol panah atau klik setiap entri untuk menavigasi timeline.
  • Layar - Memberikan representasi visual dari setiap jendela yang terlihat di layar. Klik jendela untuk memilih jendela sumber di hierarki.
  • Hierarki - Mewakili setiap jendela yang diketahui sistem. Beberapa jendela tidak berisi buffer, tetapi ada untuk menyetel kebijakan pada anak-anak jendela. Jendela yang terlihat ditandai dengan ikon V
  • Properti - Menampilkan informasi negara untuk entri yang dipilih dalam hierarki.