27 Mart 2025'ten itibaren AOSP'yi derlemek ve AOSP'ye katkıda bulunmak için aosp-main yerine android-latest-release kullanmanızı öneririz. Daha fazla bilgi için AOSP'de yapılan değişiklikler başlıklı makaleyi inceleyin.
Koleksiyonlar ile düzeninizi koruyun
İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
Winscope izleme, Android çerçevesinin bir parçasıdır. Bu sayfada, Winscope izleme görüntüleyicisini yerel olarak indirmek, oluşturmak ve çalıştırmak için gereken adımlar özetlenmektedir.
Winscope'u yerel olarak derleme
Bilgisayarınızı Winscope izleyiciyi çalıştıracak şekilde ayarlamak için aşağıdaki adımları uygulayın:
Kullanılabilir komutların listesini görmek için şu komutu çalıştırın: npm run
Aşağıdakileri kullanarak tüm üretim ve test hedeflerini oluşturun:
npm run build:prod
Winscope'u çalıştırmak için:
npm run start
Ayrı parçalar oluşturma
Aşağıdaki komutları kullanarak Winscope'un bağımsız bölümlerini ayrı ayrı oluşturabilirsiniz:
Komut
Açıklama
build:trace_processor
Perfetto'nun trace_processor en son sürümünü kullanır ve yeniden oluşturur.
build:protos
Proto tanımlarını yeniden derler.
Testler yapın
Winscope, birim ve uçtan uca testleri içerir. Bunları çalıştırmak için npm run
<command> kullanın:
Komut
Açıklama
test:unit:ci
CI veya göndermeden önce çalıştırma kancası için birim testlerini daha az ayrıntılı bir biçimde çalıştırır.
test:unit:dev
Birim testlerini yerel geliştirme için daha ayrıntılı bir biçimde çalıştırır. Bu mod, değişiklikleri izler ve doğru testleri otomatik olarak yeniden çalıştırır.
test:e2e
Araçlar arası protokol gibi uçtan uca testleri çalıştırır.
test:presubmit:quiet
CI veya göndermeden önce kancası için tüm göndermeden önce birim testlerini, linters'ı ve grafik analizini daha az ayrıntılı bir biçimde oluşturur.
test:presubmit
Yerel geliştirme için tüm gönderme öncesi birim testlerini, linters'ları ve grafik analizini daha ayrıntılı bir biçimde oluşturur.
test:all
Yerel geliştirme için tüm testleri (birim ve uçtan uca), linters ve grafik analizini daha ayrıntılı bir biçimde çalıştırır.
Uçtan uca testler
Uçtan uca testleri çalıştırmadan önce uzaktan aracı başlatmanız ve Chrome sürücüsünün doğru sürümünü yüklemeniz gerekir. Aşağıdaki kod snippet'inde run test:e2e komutu, Chrome sürücüsünü otomatik olarak yükler.
Aşağıdaki tabloda gerekli komutlar ve açıklamaları listelenmiştir. Bunları çalıştırmak için npm run command kullanın:
Komut
Açıklama
start:remote_tool_mock
Araçlar arası protokolü test etmek için uzaktan araç taklidini başlatır.
install:chromedriver
Uçtan uca testleri çalıştırmak için gerekli olan Chrome sürücüsünü yükler.
@IntDef eşlemesini güncelleme
@IntDef, bir tam sayının olası değerlerini kısıtlamak için Android'de kullanılan bir ek açıklamadır. Winscope, tam sayı yerine değerin adını göstermek için bu notların bir eşlemesini kullanır.
@IntDef eşlemesini güncellemek için aşağıdakileri yapın:
Ek açıklama ön işlemcisinin çalışması için :framework-minus-apex-intdefs oluşturun:
mp:framework-minus-apex-intdefs
Oluşturulan intDefMapping.json dosyasını önceden oluşturulmuş öğeler deposuna kopyalayın:
repo upload kullanarak Winscope'taki değişiklikleri yükleyin.
Diğer komutlar
Winscope komut dosyaları, derleme ve testlerin yanı sıra tabloda gösterildiği gibi başka özellikler de içerir. Bunları çalıştırmak için npm run command kullanın:
Komut
Açıklama
format:check
prettier kullanarak kod biçimlendirmeyle ilgili sorunları kontrol eder.
format:fix
prettier kullanarak kod biçimlendirmeyle ilgili sorunları kontrol eder ve otomatik olarak düzeltir.
eslint:check
eslint kullanarak kod biçimlendirmeyle ilgili sorunları kontrol eder.
eslint:fix
eslint kullanarak kod biçimlendirmeyle ilgili sorunları kontrol eder ve otomatik olarak düzeltir.
tslint:check
tslint kullanarak kod biçimlendirmeyle ilgili sorunları kontrol eder.
tslint:fix
tslint kullanarak kod biçimlendirmeyle ilgili sorunları kontrol eder ve otomatik olarak düzeltir.
deps_graph:check_cycles
Döngüsel bağımlılıklar için kodu analiz eder.
Sorunu giderin
Sorun giderme için aşağıdaki ipuçlarını kullanın:
Hata ProtocolError: missing required '<FIELD>' veya TypeError: Cannot
read property '<PROP>' of null
Bu durum, izleme dosyası yeni zorunlu alanlar içeren yeni bir proto tanımıyla oluşturulduğunda meydana gelir.
İzi doğru Winscope sürümünde (master, S veya R) açtığınızdan emin olun.
Yeni alanı proto üzerinde oluşturursanız npm run build:protos kullanarak Winscope'taki proto'ları yeniden derleyin.
Yüklenen bazı bağımlılık sürümleri yanlış (derleme başarısız oluyor)
package.json ve package-lock.json hizmetlerinde yapılan değişiklikleri geri alın. node_modules öğesini kaldırın. npm install komutunu tekrar çalıştırın.
Proto dosyalarından birine yeni bir alan ekledim. Bu bilgiyi nasıl gösterebilirim?
Winscope, derlendiği zamandaki proto tanımlarını kullandığından yeni alanlar varsayılan olarak görünmez. Yeni alanları göstermek için npm run build:protos kullanarak proto'ları yeniden oluşturun.
Bu sayfadaki içerik ve kod örnekleri, İçerik Lisansı sayfasında açıklanan lisanslara tabidir. Java ve OpenJDK, Oracle ve/veya satış ortaklarının tescilli ticari markasıdır.
Son güncelleme tarihi: 2025-09-03 UTC.
[[["Anlaması kolay","easyToUnderstand","thumb-up"],["Sorunumu çözdü","solvedMyProblem","thumb-up"],["Diğer","otherUp","thumb-up"]],[["İhtiyacım olan bilgiler yok","missingTheInformationINeed","thumb-down"],["Çok karmaşık / çok fazla adım var","tooComplicatedTooManySteps","thumb-down"],["Güncel değil","outOfDate","thumb-down"],["Çeviri sorunu","translationIssue","thumb-down"],["Örnek veya kod sorunu","samplesCodeIssue","thumb-down"],["Diğer","otherDown","thumb-down"]],["Son güncelleme tarihi: 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`."]]