Google is committed to advancing racial equity for Black communities. See how.
Halaman ini diterjemahkan oleh Cloud Translation API.
Switch to English

Melacak Transisi Jendela

WinScope menyediakan infrastruktur dan alat untuk merekam dan menganalisis kondisi 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

Abadikan jejak melalui Pengaturan Cepat atau adb pada perangkat yang menjalankan userdebug atau eng builds.

Pengaturan cepat

Untuk menangkap jejak dari Pengaturan Cepat :

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

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

adb

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

WindowManager melacak

Untuk menangkap jejak WindowManager:

  1. Aktifkan penelusuran:
    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 bisa mengubah konfigurasi log default dari berbagai pengaturan untuk jejak WindowManager:

  • Atur frekuensi log (untuk transaksi atau bingkai):
    adb shell cmd window tracing [ frame  |  transaction ]
  • Konfigurasikan level verbose untuk entri log:
    adb shell cmd window tracing level [ all  |  trim  |  critical ]
  • Setel 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 penelusuran:
    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 dapat mengubah konfigurasi log default dari berbagai pengaturan untuk jejak SurfaceFlinger:

  • Setel 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 

Menghasilkan dump negara

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

Manajer Jendela

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 aplikasinya dari sumber atau buka dari direktori prebuilt.

  1. Unduh artefak prebuilt 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 jejak.

Menggunakan WinScope

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

Screenshot WinScope
Gambar 1. Menganalisis jejak di WinScope
  • Timeline - Memperlihatkan urutan kejadian 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.
  • Hierarki - Merupakan setiap jendela yang dikenal oleh sistem. Beberapa jendela tidak mengandung buffer, tetapi ada untuk menetapkan kebijakan pada anak-anak jendela itu. Jendela yang terlihat ditandai dengan ikon V
  • Properti - Menampilkan informasi status untuk entri yang dipilih dalam hierarki.