تشغيل Winscope

تتبُّع Winscope هو جزء من إطار عمل Android. توضّح هذه الصفحة الخطوات المطلوبة لتنزيل أداة عرض عمليات التتبُّع في Winscope وإنشائها وتشغيلها على الجهاز.

إنشاء Winscope محليًا

اتّبِع الخطوات التالية لإعداد جهاز الكمبيوتر لتشغيل أداة Winscope Tracer:

  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 يتم استخراج أحدث إصدار من
trace_processor وإعادة إنشائه.
build:protos يعيد تجميع تعريفات proto.

إجراء الاختبارات

يحتوي Winscope على اختبارات الوحدات والاختبارات الشاملة. لتشغيلها، استخدِم npm run <command>:

الأمر الوصف
test:unit:ci يُجري اختبارات الوحدة بتنسيق أقل تفصيلاً لعمليات الدمج المتواصل
أو خطافات ما قبل الإرسال.
test:unit:dev يُجري اختبارات الوحدات بتنسيق أكثر تفصيلاً
للتطوير المحلي. يراقب هذا الوضع التغييرات
ويعيد تشغيل الاختبارات الصحيحة تلقائيًا.
test:e2e لتشغيل الاختبارات الشاملة، مثل اختبارات
بروتوكول الأدوات المتعددة
test:presubmit:quiet تنشئ جميع اختبارات الوحدات قبل الإرسال، وأدوات التدقيق، وتحليل
الرسومات البيانية بتنسيق أقل تفصيلاً لعمليات الدمج المتواصل أو خطاف
قبل الإرسال.
test:presubmit تنشئ هذه السمة جميع وحدات الاختبار قبل الإرسال، وأدوات التدقيق، وتحليل الرسومات
بتنسيق أكثر تفصيلاً للتطوير
المحلي.
test:all تنفيذ جميع الاختبارات (الوحدات والاختبارات الشاملة) وأدوات التدقيق والتحليل البياني
بتنسيق أكثر تفصيلاً للتطوير
المحلي

اختبارات شاملة

قبل تشغيل اختبارات شاملة، عليك بدء تشغيل الأداة عن بُعد وتثبيت الإصدار الصحيح من برنامج تشغيل Chrome. في مقتطف الرمز التالي، يثبّت الأمر run test:e2e برنامج تشغيل Chrome تلقائيًا.

$ npm run start
$ npm run start:remote_tool_mock
$ npm run test:e2e

يسرد الجدول التالي الأوامر الضرورية وأوصافها. لتشغيلها، استخدِم npm run command:

الأمر الوصف
start:remote_tool_mock يبدأ عملية محاكاة الأداة عن بُعد لاختبار بروتوكول الأدوات المتعددة.
install:chromedriver تثبِّت هذه الخطوة برنامج تشغيل Chrome اللازم لتنفيذ اختبارات شاملة.

تعديل عملية الربط ‎ @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. حمِّل التغييرات في Winscope باستخدام repo upload.

طلبات أخرى

بالإضافة إلى عمليات الإنشاء والاختبار، تحتوي نصوص 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. إذا أنشأت الحقل الجديد في ملف proto، عليك إعادة تجميع ملفات proto في Winscope باستخدام npm run build:protos.

  • بعض إصدارات التبعيات المثبَّتة غير صحيحة (يتعذّر إنشاء التطبيق)

    • إلغاء التغييرات التي أجريتها على package.json وpackage-lock.json إزالة node_modules نفِّذ الأمر npm install مرة أخرى.
  • أضفتُ حقلًا جديدًا إلى أحد ملفات proto. كيف يمكنني عرضها؟

    • يستخدم Winscope تعريفات proto من وقت تجميعه، لذا لن تظهر الحقول الجديدة تلقائيًا. لعرض الحقول الجديدة، أعِد إنشاء ملفات protos باستخدام npm run build:protos.