Menjalankan Winscope

Perekaman aktivitas Winscope adalah bagian dari framework Android. Halaman ini menguraikan langkah-langkah yang diperlukan untuk mendownload, membuat, dan menjalankan pelihat rekaman aktivitas Winscope secara lokal.

Membangun Winscope secara lokal

Ikuti langkah-langkah berikut untuk menyiapkan PC Anda agar dapat menjalankan perekam aktivitas 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. Bangun semua target produksi dan pengujian menggunakan:

    npm run build:prod
    
  5. Jalankan Winscope menggunakan:

    npm run start
    

Membangun bagian terpisah

Anda dapat membuat setiap bagian Winscope secara terpisah menggunakan perintah berikut:

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

Menjalankan pengujian

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

Perintah Deskripsi
test:unit:ci Menjalankan pengujian unit dalam format yang tidak terlalu verbose untuk CI
atau hook pra-commit.
test:unit:dev Menjalankan pengujian unit dalam format yang lebih verbose untuk
pengembangan lokal. Mode ini memantau perubahan dan
secara otomatis menjalankan ulang pengujian yang benar.
test:e2e Menjalankan pengujian menyeluruh, seperti pengujian untuk protokol lintas alat
test:presubmit:quiet Membangun semua pengujian unit pra-commit, linter, dan analisis grafik
dalam format yang tidak terlalu verbose untuk hook pra-commit atau CI
.
test:presubmit Membangun semua pengujian unit pra-kirim, linter, dan analisis grafik dalam format yang lebih verbose untuk pengembangan lokal.

test:all Menjalankan semua pengujian (unit dan end-to-end), linter, dan analisis grafik dalam format yang lebih verbose untuk pengembangan lokal.

Pengujian menyeluruh

Sebelum menjalankan pengujian end-to-end, Anda harus memulai alat jarak jauh dan menginstal driver Chrome versi yang benar. Dalam cuplikan kode berikut, perintah run test:e2e akan otomatis menginstal driver Chrome.

$ npm run start
$ npm run start:remote_tool_mock
$ npm run test:e2e

Tabel berikut mencantumkan perintah yang diperlukan dan deskripsinya. Untuk menjalankannya, gunakan npm run command:

Perintah Deskripsi
start:remote_tool_mock Memulai tiruan alat jarak jauh untuk menguji protokol lintas alat.
install:chromedriver Menginstal driver Chrome yang diperlukan untuk menjalankan pengujian menyeluruh.

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. Bangun :framework-minus-apex-intdefs untuk menjalankan preprosesor anotasi:

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

    $ 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 diisi baru.

      1. Pastikan Anda membuka rekaman aktivitas di 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)

    • Membatalkan perubahan pada 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 dari saat dikompilasi, sehingga kolom baru tidak akan muncul secara default. Untuk menampilkan kolom baru, bangun ulang proto menggunakan npm run build:protos.