Winscope ट्रैकिंग, Android फ़्रेमवर्क का हिस्सा है. इस पेज पर, Winscope ट्रेस व्यूअर को स्थानीय तौर पर डाउनलोड करने, बनाने, और चलाने के लिए ज़रूरी चरणों के बारे में बताया गया है.
Winscope को स्थानीय तौर पर बनाना
Winscope ट्रैसर चलाने के लिए, अपने पीसी को सेट अप करने के लिए यह तरीका अपनाएं:
- Android सोर्स डाउनलोड करें.
Winscope फ़ोल्डर पर जाएं:
cd development/tools/winscope
इनका इस्तेमाल करके डिपेंडेंसी इंस्टॉल करें:
npm install
उपलब्ध निर्देशों की सूची देखने के लिए, यह कमांड चलाएं:
npm run
इनका इस्तेमाल करके, सभी प्रॉडक्ट और टेस्ट टारगेट बनाएं:
npm run build:prod
Winscope को चलाने के लिए:
npm run start
अलग-अलग हिस्से बनाना
Winscope के अलग-अलग हिस्सों को अलग-अलग बनाया जा सकता है. इसके लिए, इन निर्देशों का इस्तेमाल करें:
निर्देश | ब्यौरा |
---|---|
build:trace_processor |
Perfetto के trace_processor के नए वर्शन की जांच करता है और उसे फिर से बनाता है. |
build:protos |
प्रोटो परिभाषाओं को फिर से कंपाइल करता है. |
टेस्ट चलाना
Winscope में यूनिट और एंड-टू-एंड टेस्ट शामिल होते हैं. इन्हें चलाने के लिए, npm run
<command>
का इस्तेमाल करें:
निर्देश | ब्यौरा |
---|---|
test:unit:ci |
यह यूनिट टेस्ट को कम शब्दों वाले फ़ॉर्मैट में चलाता है. ऐसा सीआई या सबमिट करने से पहले होने वाले हुक के लिए किया जाता है. |
test:unit:dev |
लोकल डेवलपमेंट के लिए, यूनिट टेस्ट को ज़्यादा जानकारी वाले फ़ॉर्मैट में चलाता है. यह मोड बदलावों को मॉनिटर करता है और सही टेस्ट को अपने-आप फिर से चलाता है. |
test:e2e |
शुरू से आखिर तक की जांच करता है. जैसे, क्रॉस-टूल प्रोटोकॉल के लिए की जाने वाली जांच. |
test:presubmit:quiet |
यह CI या सबमिट करने से पहले हुक के लिए, कम शब्दों वाले फ़ॉर्मैट में सभी प्रीस्बमिट यूनिट टेस्ट, लिंटर, और ग्राफ़ विश्लेषण बनाता है. |
test:presubmit |
यह स्थानीय डेवलपमेंट के लिए, सबमिट करने से पहले की जाने वाली सभी यूनिट टेस्ट, लिंटर, और ग्राफ़ विश्लेषण को ज़्यादा जानकारी वाले फ़ॉर्मैट में बनाता है. |
test:all |
यह स्थानीय डेवलपमेंट के लिए, ज़्यादा जानकारी वाले फ़ॉर्मैट में सभी टेस्ट (यूनिट और एंड-टू-एंड), लिंटर, और ग्राफ़ का विश्लेषण करता है. |
@IntDef मैपिंग को अपडेट करना
@IntDef
एक एनोटेशन है. इसका इस्तेमाल Android में, किसी पूर्णांक की संभावित वैल्यू पर पाबंदी लगाने के लिए किया जाता है. Winscope, इन एनोटेशन की मैपिंग का इस्तेमाल करके, पूर्णांक के बजाय वैल्यू का नाम दिखाता है.
@IntDef
मैपिंग को अपडेट करने के लिए, यह तरीका अपनाएं:
एनोटेशन प्रीप्रोसेसर को चलाने के लिए,
:framework-minus-apex-intdefs
बनाएं:mp :framework-minus-apex-intdefs
जनरेट की गई
intDefMapping.json
फ़ाइल को पहले से बने रिपॉज़िटरी में कॉपी करें:$ 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
repo upload
का इस्तेमाल करके, Winscope में बदलाव अपलोड करें.
दूसरे निर्देश
बिल्ड और टेस्ट के अलावा, Winscope स्क्रिप्ट में अन्य सुविधाएं भी होती हैं, जैसा कि टेबल में दिखाया गया है. इन्हें चलाने के लिए, npm run command
का इस्तेमाल करें:
निर्देश | ब्यौरा |
---|---|
format:check |
prettier का इस्तेमाल करके, कोड फ़ॉर्मैट करने से जुड़ी समस्याओं की जांच करता है. |
format:fix |
prettier का इस्तेमाल करके, कोड फ़ॉर्मैट करने से जुड़ी समस्याओं का पता लगाता है और उन्हें अपने-आप ठीक करता है. |
eslint:check |
eslint का इस्तेमाल करके, कोड फ़ॉर्मैट करने से जुड़ी समस्याओं की जांच करता है. |
eslint:fix |
eslint का इस्तेमाल करके, कोड फ़ॉर्मैट करने से जुड़ी समस्याओं का पता लगाता है और उन्हें अपने-आप ठीक करता है. |
tslint:check |
tslint का इस्तेमाल करके, कोड फ़ॉर्मैट करने से जुड़ी समस्याओं की जांच करता है. |
tslint:fix |
tslint का इस्तेमाल करके, कोड फ़ॉर्मैट करने से जुड़ी समस्याओं का पता लगाता है और उन्हें अपने-आप ठीक करता है. |
deps_graph:check_cycles |
सर्कुलर डिपेंडेंसी के लिए कोड का विश्लेषण करता है. |
समस्या हल करें
समस्या हल करने के लिए, यहां दी गई सलाह का इस्तेमाल करें:
गड़बड़ी
ProtocolError: missing required '<FIELD>'
याTypeError: Cannot read property '<PROP>' of null
ऐसा तब होता है, जब ट्रेस फ़ाइल को नई प्रोटो डेफ़िनिशन के साथ बनाया गया हो, जिसमें नए ज़रूरी फ़ील्ड शामिल हों.
- पक्का करें कि आपने Winscope के सही वर्शन (मास्टर, S या R) पर ट्रैस खोला हो.
अगर आपने प्रोटो पर नया फ़ील्ड बनाया है, तो
npm run build:protos
का इस्तेमाल करके, Winscope में प्रोटो को फिर से कंपाइल करें.
इंस्टॉल की गई कुछ डिपेंडेंसी के वर्शन गलत हैं (बिल्ड नहीं हो पाता)
package.json
औरpackage-lock.json
में किए गए बदलावों को पहले जैसा करें.node_modules
को हटाएं.npm install
को फिर से चलाएं.
मैंने किसी प्रोटो फ़ाइल में नया फ़ील्ड जोड़ा है. मैं इसे कैसे दिखाऊं?
- Winscope, प्रोटो डेफ़िनिशन का इस्तेमाल तब से करता है, जब इसे कंपाइल किया गया था. इसलिए, नए फ़ील्ड डिफ़ॉल्ट रूप से नहीं दिखेंगे. नए फ़ील्ड दिखाने के लिए,
npm run build:protos
का इस्तेमाल करके प्रोटोस को फिर से बनाएं.
- Winscope, प्रोटो डेफ़िनिशन का इस्तेमाल तब से करता है, जब इसे कंपाइल किया गया था. इसलिए, नए फ़ील्ड डिफ़ॉल्ट रूप से नहीं दिखेंगे. नए फ़ील्ड दिखाने के लिए,