ردیابی Winscope بخشی از چارچوب اندروید است. در این صفحه مراحل مورد نیاز برای دانلود، ساخت و اجرای نمایشگر ردیابی Winscope به صورت محلی شرح داده شده است.
Winscope را به صورت محلی بسازید
مراحل زیر را برای تنظیم رایانه شخصی خود برای اجرای ردیاب Winscope دنبال کنید:
- سورس اندروید را دانلود کنید .
به پوشه Winscope بروید:
cd development/tools/winscope
وابستگی ها را با استفاده از:
npm install
برای مشاهده لیستی از دستورات موجود، اجرا کنید:
npm run
تمام اهداف تولید و آزمایش را با استفاده از:
npm run build:prod
Winscope را با استفاده از:
npm run start
ساخت قطعات جداگانه
با استفاده از دستورات زیر می توانید بخش های جداگانه Winscope را به طور جداگانه بسازید:
فرمان | توضیحات |
---|---|
build:trace_processor | آخرین نسخه را بررسی و بازسازی می کندtrace_processor Perfetto's . |
build:protos | تعاریف اولیه را دوباره کامپایل می کند. |
تست ها را اجرا کنید
Winscope شامل تست های واحد و پایان به انتها است. برای اجرای آنها از npm run <command>
استفاده کنید:
فرمان | توضیحات |
---|---|
test:unit:ci | تست های واحد را در قالبی کمتر پرمخاطب برای CI اجرا می کند یا قلاب را از قبل ارسال کنید. |
test:unit:dev | تست های واحد را در قالبی پرمخاطب تر اجرا می کند توسعه محلی این حالت مراقب تغییرات و به طور خودکار تست های صحیح را دوباره اجرا می کند. |
test:e2e | آزمایشهای سرتاسری را اجرا میکند، مانند آزمایشهای مربوط به پروتکل متقابل ابزار |
test:presubmit:quiet | همه آزمونهای واحد پیشارسال، لینترها و نمودارها را میسازد تجزیه و تحلیل در قالب کمتر پرمخاطب برای CI یا از پیش ارسال کنید قلاب |
test:presubmit | همه آزمونهای واحد پیشارسال، لینترها و نمودارها را میسازد تجزیه و تحلیل در قالب مفصل تر برای محلی توسعه |
test:all | تمام تست ها (واحد و سرتاسر)، لینترها و تجزیه و تحلیل نمودار در قالبی مفصل تر برای محلی توسعه |
نگاشت @IntDef را به روز کنید
@IntDef
یک حاشیه نویسی است که در اندروید برای محدود کردن مقادیر احتمالی یک عدد صحیح استفاده می شود. 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) باز می کنید.
اگر فیلد جدید را روی پروتو ایجاد کردید، پروتوها را در Winscope با استفاده از
npm run build:protos
دوباره کامپایل کنید.
برخی از نسخه های وابستگی نصب شده اشتباه هستند (ساخت با شکست مواجه شد)
- تغییرات را به
package.json
وpackage-lock.json
برگردانید.node_modules
را حذف کنید.npm install
دوباره اجرا کنید.
- تغییرات را به
من یک فیلد جدید به یکی از فایل های پروتو اضافه کردم. چگونه آن را نمایش دهم؟
- Winscope از تعاریف اولیه از زمان کامپایل استفاده می کند، بنابراین فیلدهای جدید به طور پیش فرض ظاهر نمی شوند. برای نمایش فیلدهای جدید، پروتوها را با استفاده از
npm run build:protos
بازسازی کنید.
- Winscope از تعاریف اولیه از زمان کامپایل استفاده می کند، بنابراین فیلدهای جدید به طور پیش فرض ظاهر نمی شوند. برای نمایش فیلدهای جدید، پروتوها را با استفاده از