تتبُّع Winscope هو جزء من إطار عمل Android. توضّح هذه الصفحة الخطوات المطلوبة لتنزيل أداة عرض عمليات التتبُّع في Winscope وإنشائها وتشغيلها على الجهاز.
إنشاء Winscope محليًا
اتّبِع الخطوات التالية لإعداد جهاز الكمبيوتر لتشغيل أداة Winscope Tracer:
- تنزيل مصدر 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 باستخدام