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:
- Download sumber Android.
 Buka folder Winscope:
cd development/tools/winscopeInstal dependensi menggunakan:
npm installUntuk melihat daftar perintah yang tersedia, jalankan:
npm runBangun semua target produksi dan pengujian menggunakan:
npm run build:prodJalankan 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:
Bangun
:framework-minus-apex-intdefsuntuk menjalankan preprosesor anotasi:mp :framework-minus-apex-intdefsSalin file
intDefMapping.jsonyang 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.jsonUpload 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>'atauTypeError: Cannot read property '<PROP>' of nullHal ini terjadi saat file rekaman aktivitas dibuat dengan definisi proto baru, yang berisi kolom wajib diisi baru.
- Pastikan Anda membuka rekaman aktivitas di versi Winscope yang benar (master, S, atau R).
 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.jsondanpackage-lock.json. Hapusnode_modules. Jalankannpm installlagi. 
- Membatalkan perubahan pada 
 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. 
- Winscope menggunakan definisi proto dari saat dikompilasi, sehingga kolom
baru tidak akan muncul secara default. Untuk menampilkan kolom baru, bangun ulang proto menggunakan