Winscope را اجرا کنید

ردیابی Winscope بخشی از چارچوب اندروید است. در این صفحه مراحل مورد نیاز برای دانلود، ساخت و اجرای نمایشگر ردیابی Winscope به صورت محلی شرح داده شده است.

Winscope را به صورت محلی بسازید

مراحل زیر را برای تنظیم رایانه شخصی خود برای اجرای ردیاب Winscope دنبال کنید:

  1. سورس اندروید را دانلود کنید .
  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 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 ، موارد زیر را انجام دهید:

  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. اگر فیلد جدید را روی پروتو ایجاد کردید، پروتوها را در Winscope با استفاده از npm run build:protos دوباره کامپایل کنید.

  • برخی از نسخه های وابستگی نصب شده اشتباه هستند (ساخت با شکست مواجه شد)

    • تغییرات را به package.json و package-lock.json برگردانید. node_modules را حذف کنید. npm install دوباره اجرا کنید.
  • من یک فیلد جدید به یکی از فایل های پروتو اضافه کردم. چگونه آن را نمایش دهم؟

    • Winscope از تعاریف اولیه از زمان کامپایل استفاده می کند، بنابراین فیلدهای جدید به طور پیش فرض ظاهر نمی شوند. برای نمایش فیلدهای جدید، پروتوها را با استفاده از npm run build:protos بازسازی کنید.