تتبُّع 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 |
يتم استخراج أحدث إصدار من 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، اتّبِع الخطوات التالية:
أنشئ
: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حمِّل التغييرات في 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يحدث ذلك عندما يتم إنشاء ملف التتبُّع باستخدام تعريف بروتوكول جديد، يتضمّن حقولاً جديدة مطلوبة.
- تأكَّد من فتح التتبُّع على إصدار Winscope الصحيح (الإصدار الرئيسي أو الإصدار S أو الإصدار R).
إذا أنشأت الحقل الجديد في ملف proto، عليك إعادة تجميع ملفات proto في Winscope باستخدام
npm run build:protos.
بعض إصدارات التبعيات المثبَّتة غير صحيحة (يتعذّر إنشاء التطبيق)
- إلغاء التغييرات التي أجريتها على
package.jsonوpackage-lock.jsonإزالةnode_modulesنفِّذ الأمرnpm installمرة أخرى.
- إلغاء التغييرات التي أجريتها على
أضفتُ حقلًا جديدًا إلى أحد ملفات proto. كيف يمكنني عرضها؟
- يستخدم Winscope تعريفات proto من وقت تجميعه، لذا لن تظهر الحقول الجديدة تلقائيًا. لعرض الحقول الجديدة، أعِد إنشاء ملفات protos باستخدام
npm run build:protos.
- يستخدم Winscope تعريفات proto من وقت تجميعه، لذا لن تظهر الحقول الجديدة تلقائيًا. لعرض الحقول الجديدة، أعِد إنشاء ملفات protos باستخدام