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/winscope
Instal dependensi menggunakan:
npm install
Untuk melihat daftar perintah yang tersedia, jalankan:
npm run
Bangun semua target produksi dan pengujian menggunakan:
npm run build:prod
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:
Bangun
:framework-minus-apex-intdefs
untuk menjalankan preprosesor anotasi:mp :framework-minus-apex-intdefs
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
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>'
atauTypeError: Cannot read property '<PROP>' of null
Hal 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.json
danpackage-lock.json
. Hapusnode_modules
. Jalankannpm install
lagi.
- 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