Mulai 27 Maret 2025, sebaiknya gunakan android-latest-release, bukan aosp-main, untuk mem-build dan berkontribusi pada AOSP. Untuk mengetahui informasi selengkapnya, lihat Perubahan pada AOSP.
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
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:
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.
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:
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.
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 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.
Konten dan contoh kode di halaman ini tunduk kepada lisensi yang dijelaskan dalam Lisensi Konten. Java dan OpenJDK adalah merek dagang atau merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-09-03 UTC.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Informasi yang saya butuhkan tidak ada","missingTheInformationINeed","thumb-down"],["Terlalu rumit/langkahnya terlalu banyak","tooComplicatedTooManySteps","thumb-down"],["Sudah usang","outOfDate","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Masalah kode / contoh","samplesCodeIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-09-03 UTC."],[],[],null,["Winscope tracing is part of the Android framework. This page outlines the\nsteps required to download, build, and run the Winscope trace viewer locally.\n\nBuild Winscope locally\n\nFollow these steps to set up your PC to run the Winscope tracer:\n\n1. [Download the Android source](/docs/setup/build/building).\n2. Navigate to the Winscope folder:\n\n cd development/tools/winscope\n\n3. Install dependencies using:\n\n npm install\n\n To see a list of available commands, run: `npm run`\n4. Build all prod and test targets using:\n\n npm run build:prod\n\n5. Run Winscope using:\n\n npm run start\n\n| **Note:** You can also download and build Winscope to host on a standard web server to get a shareable link to the tool.\n\nBuild separate parts\n\nYou can build individual parts of Winscope separately using the following\ncommands:\n\n| Command | Description |\n|-------------------------|-----------------------------------------------------------------------------|\n| `build:trace_processor` | Checks out and rebuilds the latest version of Perfetto's `trace_processor`. |\n| `build:protos` | Recompiles the proto definitions. |\n\nRun tests **Tip:** Winscope doesn't build on Soong and can't be built by Tradefed, so it's recommended to have a local Git hook to the tests in your local environment.\n\nWinscope contains unit and end-to-end tests. To run them use `npm run\n\u003ccommand\u003e`:\n\n| Command | Description |\n|------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------|\n| `test:unit:ci` | Runs the unit tests in a less verbose format for CI or presubmit hook. |\n| `test:unit:dev` | Runs the unit tests in a more verbose format for local development. This mode watches for changes and automatically reruns the correct tests. |\n| `test:e2e` | Runs the end-to-end tests, such as those for the cross-tool protocol. |\n| `test:presubmit:quiet` | Builds all presubmit unit tests, linters, and graph analysis in a less verbose format for CI or presubmit hook. |\n| `test:presubmit` | Builds all presubmit unit tests, linters, and graph analysis in a more verbose format for local development. |\n| `test:all` | Runs all tests (unit and end-to-end), linters, and graph analysis in a more verbose format for local development. |\n\nEnd-to-end tests\n\nBefore running end-to-end tests, you must start the remote tool and install the\ncorrect version of the Chrome driver. In the following code snippet, the\n`run test:e2e` command automatically installs the Chrome driver. \n\n $ npm run start\n $ npm run start:remote_tool_mock\n $ npm run test:e2e\n\nThe following table lists the necessary commands and their descriptions. To run\nthem use `npm run `\u003cvar translate=\"no\"\u003ecommand\u003c/var\u003e:\n\n| Command | Description |\n|--------------------------|---------------------------------------------------------------|\n| `start:remote_tool_mock` | Starts the remote tool mock for testing cross tool protocol. |\n| `install:chromedriver` | Installs the Chrome driver necessary to run end-to-end tests. |\n\nUpdate @IntDef mapping\n\n`@IntDef` is an annotation used in Android to restrict the possible values of an\ninteger. Winscope uses a mapping of these annotations to display the name of the\nvalue instead of the integer.\n\nTo update the `@IntDef` mapping, do the following:\n\n1. Build `:framework-minus-apex-intdefs` for the annotation preprocessor to run:\n\n mp :framework-minus-apex-intdefs\n\n2. Copy the generated `intDefMapping.json` file to the prebuilts repository:\n\n $ 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) \u003e ./development/tools/winscope/src/common/intDefMapping.json\n\n3. Upload the changes in Winscope using `repo upload`.\n\nOther commands\n\nIn addition to build and tests, Winscope scripts contain other capabilities, as\nshown in the table. To run them use `npm run `\u003cvar translate=\"no\"\u003ecommand\u003c/var\u003e:\n\n| Command | Description |\n|---------------------------|----------------------------------------------------------------|\n| `format:check` | Checks for code formatting issues using `prettier`. |\n| `format:fix` | Checks and auto fixes code formatting issues using `prettier`. |\n| `eslint:check` | Checks for code formatting issues using `eslint`. |\n| `eslint:fix` | Checks and auto fixes code formatting issues using `eslint`. |\n| `tslint:check` | Checks for code formatting issues using `tslint`. |\n| `tslint:fix` | Checks and auto fixes code formatting issues using `tslint`. |\n| `deps_graph:check_cycles` | Analyzes the code for cyclical dependencies. |\n\nTroubleshoot\n\nUse the following tips for troubleshooting:\n\n- **Error `ProtocolError: missing required '\u003cFIELD\u003e'` or `TypeError: Cannot\n read property '\u003cPROP\u003e' of null`**\n\n - This occurs when the trace file was created with a new proto definition,\n containing new *required* fields.\n\n 1. Make sure you're opening the trace on the correct Winscope version (master, S, or R).\n 2. If you create the new field on the proto, recompile the protos in\n Winscope using `npm run build:protos`.\n\n | **Note:** You shouldn't need a new required field, because the protos should be backward compatible.\n- **Some installed dependency versions are wrong (build fails)**\n\n - Revert changes to `package.json` and `package-lock.json`. Remove `node_modules`. Run `npm install` again.\n- **I added a new field to one of the proto files. How do I display it?**\n\n - Winscope uses the proto definitions from when it was compiled, so new fields won't appear by default. To show new fields, rebuild the protos using `npm run build:protos`."]]