Menjalankan Winscope

Pelacakan Winscope adalah bagian dari framework Android. Halaman ini menguraikan langkah-langkah yang diperlukan untuk mendownload, mem-build, dan menjalankan penampil rekaman aktivitas Winscope secara lokal.

Mem-build Winscope secara lokal

Ikuti langkah-langkah berikut untuk menyiapkan PC Anda guna menjalankan pelacak Winscope:

  1. Download sumber Android.
  2. Buka folder Winscope:

    cd development/tools/winscope
    
  3. Instal dependensi menggunakan:

    npm install
    

    Untuk melihat daftar perintah yang tersedia, jalankan: npm run

  4. Build semua target produksi dan pengujian menggunakan:

    npm run build:prod
    
  5. Jalankan Winscope menggunakan:

    npm run start
    

Membuat bagian terpisah

Anda dapat mem-build setiap bagian Winscope secara terpisah menggunakan perintah berikut:

Perintah Deskripsi
build:trace_processor Memeriksa dan mem-build ulang versi terbaru
trace_processor Perfetto.
build:protos Mengompilasi ulang definisi proto.

Menjalankan pengujian

Winscope berisi pengujian unit dan menyeluruh. Untuk menjalankannya, gunakan npm run <command>:

Perintah Deskripsi
test:unit:ci Menjalankan pengujian unit dalam format yang lebih ringkas untuk hook presubmit atau CI
.
test:unit:dev Menjalankan pengujian unit dalam format yang lebih panjang untuk
pengembangan lokal. Mode ini memantau perubahan dan
otomatis menjalankan ulang pengujian yang benar.
test:e2e Menjalankan pengujian menyeluruh, seperti pengujian untuk protokol lintas alat
.
test:presubmit:quiet Mem-build semua pengujian unit pra-pengiriman, linter, dan analisis grafik
dalam format yang lebih ringkas untuk hook CI atau presubmit
.
test:presubmit Mem-build semua pengujian unit pra-pengiriman, linter, dan analisis
grafik dalam format yang lebih panjang untuk pengembangan lokal.
test:all Menjalankan semua pengujian (unit dan menyeluruh), linter, dan analisis grafik
dalam format yang lebih panjang untuk pengembangan
lokal.

Memperbarui pemetaan @IntDef

@IntDef adalah anotasi yang digunakan di Android untuk membatasi kemungkinan nilai bilangan bulat. Winscope menggunakan pemetaan anotasi ini untuk menampilkan nama nilai, bukan bilangan bulat.

Untuk memperbarui pemetaan @IntDef, lakukan hal berikut:

  1. Build :framework-minus-apex-intdefs agar preprosesor anotasi berjalan:

    mp :framework-minus-apex-intdefs
    
  2. Salin file intDefMapping.json yang dihasilkan ke repositori bawaan:

    $ python3 -c 'import sys,json,collections; print(json.dumps(collections.OrderedDict(sorted(collections.ChainMap(*map(lambda x:json.load(open(x)), sys.argv[1:])).items())), indent=2))' $(find out/soong/.intermediates/frameworks/base -iname intDefMapping.json) > ./development/tools/winscope/src/common/intDefMapping.json
    
  3. Upload perubahan di Winscope menggunakan repo upload.

Perintah lainnya

Selain build dan pengujian, skrip Winscope berisi kemampuan lain, seperti yang ditunjukkan dalam tabel. Untuk menjalankannya, gunakan npm run command:

Perintah Deskripsi
format:check Memeriksa masalah pemformatan kode menggunakan prettier.
format:fix Memeriksa dan memperbaiki masalah pemformatan kode secara otomatis menggunakan prettier.
eslint:check Memeriksa masalah pemformatan kode menggunakan eslint.
eslint:fix Memeriksa dan memperbaiki masalah pemformatan kode secara otomatis menggunakan eslint.
tslint:check Memeriksa masalah pemformatan kode menggunakan tslint.
tslint:fix Memeriksa dan memperbaiki masalah pemformatan kode secara otomatis menggunakan tslint.
deps_graph:check_cycles Menganalisis kode untuk dependensi siklus.

Memecahkan masalah

Gunakan tips berikut untuk memecahkan masalah:

  • Error ProtocolError: missing required '<FIELD>' atau TypeError: Cannot read property '<PROP>' of null

    • Hal ini terjadi saat file rekaman aktivitas dibuat dengan definisi proto baru, yang berisi kolom wajib baru.

      1. Pastikan Anda membuka rekaman aktivitas pada versi Winscope yang benar (master, S, atau R).
      2. Jika Anda membuat kolom baru di proto, kompilasi ulang proto di Winscope menggunakan npm run build:protos.

  • Beberapa versi dependensi yang diinstal salah (build gagal)

    • Kembalikan perubahan ke package.json dan package-lock.json. Hapus node_modules. Jalankan npm install lagi.
  • Saya menambahkan kolom baru ke salah satu file proto. Bagaimana cara menampilkannya?

    • Winscope menggunakan definisi proto sejak dikompilasi, sehingga kolom baru tidak akan muncul secara default. Untuk menampilkan kolom baru, build ulang proto menggunakan npm run build:protos.