Winscope चलाना

Winscope ट्रैकिंग, Android फ़्रेमवर्क का हिस्सा है. इस पेज पर, Winscope ट्रेस व्यूअर को स्थानीय तौर पर डाउनलोड करने, बनाने, और चलाने के लिए ज़रूरी चरणों के बारे में बताया गया है.

Winscope को स्थानीय तौर पर बनाना

Winscope ट्रैसर चलाने के लिए, अपने पीसी को सेट अप करने के लिए यह तरीका अपनाएं:

  1. Android सोर्स डाउनलोड करें.
  2. Winscope फ़ोल्डर पर जाएं:

    cd development/tools/winscope
    
  3. इनका इस्तेमाल करके डिपेंडेंसी इंस्टॉल करें:

    npm install
    

    उपलब्ध निर्देशों की सूची देखने के लिए, यह कमांड चलाएं: npm run

  4. इनका इस्तेमाल करके, सभी प्रॉडक्ट और टेस्ट टारगेट बनाएं:

    npm run build:prod
    
  5. 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 मैपिंग को अपडेट करने के लिए, यह तरीका अपनाएं:

  1. एनोटेशन प्रीप्रोसेसर को चलाने के लिए, :framework-minus-apex-intdefs बनाएं:

    mp :framework-minus-apex-intdefs
    
  2. जनरेट की गई 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
    
  3. 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

    • ऐसा तब होता है, जब ट्रेस फ़ाइल को नई प्रोटो डेफ़िनिशन के साथ बनाया गया हो, जिसमें नए ज़रूरी फ़ील्ड शामिल हों.

      1. पक्का करें कि आपने Winscope के सही वर्शन (मास्टर, S या R) पर ट्रैस खोला हो.
      2. अगर आपने प्रोटो पर नया फ़ील्ड बनाया है, तो npm run build:protos का इस्तेमाल करके, Winscope में प्रोटो को फिर से कंपाइल करें.

  • इंस्टॉल की गई कुछ डिपेंडेंसी के वर्शन गलत हैं (बिल्ड नहीं हो पाता)

    • package.json और package-lock.json में किए गए बदलावों को पहले जैसा करें. node_modules को हटाएं. npm install को फिर से चलाएं.
  • मैंने किसी प्रोटो फ़ाइल में नया फ़ील्ड जोड़ा है. मैं इसे कैसे दिखाऊं?

    • Winscope, प्रोटो डेफ़िनिशन का इस्तेमाल तब से करता है, जब इसे कंपाइल किया गया था. इसलिए, नए फ़ील्ड डिफ़ॉल्ट रूप से नहीं दिखेंगे. नए फ़ील्ड दिखाने के लिए, npm run build:protos का इस्तेमाल करके प्रोटोस को फिर से बनाएं.