המעקב של Winscope הוא חלק מהמסגרת של Android. בדף הזה מפורטים השלבים להורדה, ליצירה ולהפעלה של כלי הצפייה בנתוני המעקב של Winscope באופן מקומי.
פיתוח גרסת build של Winscope באופן מקומי
כדי להגדיר את המחשב להרצת הכלי למעקב Winscope:
- מורידים את קוד המקור של Android.
עוברים לתיקייה Winscope:
cd development/tools/winscope
מתקינים את יחסי התלות באמצעות:
npm install
כדי לראות את רשימת הפקודות הזמינות, מריצים את הפקודה:
npm run
יצירת גרסאות build לכל יעדי הייצור והבדיקה באמצעות:
npm run build:prod
מפעילים את Winscope באמצעות:
npm run start
פיתוח חלקים נפרדים
אפשר לפתח חלקים נפרדים של Winscope בנפרד באמצעות הפקודות הבאות:
הוראה | תיאור |
---|---|
build:trace_processor |
בודקים את הגרסה האחרונה של trace_processor של Perfetto ובונים אותה מחדש. |
build:protos |
קומפילציה מחדש של הגדרות ה-proto. |
הרצת בדיקות
Winscope מכיל בדיקות יחידה ובדיקות מקצה לקצה. כדי להריץ אותן, משתמשים ב-npm run
<command>
:
הוראה | תיאור |
---|---|
test:unit:ci |
הרצת בדיקות היחידה בפורמט פחות מפורט ל-CI או ל-hook של שליחת קובץ לפני בדיקה. |
test:unit:dev |
הפעלת בדיקות היחידה בפורמט מפורט יותר לפיתוח מקומי . במצב הזה המערכת עוקבת אחרי שינויים ומריצה אוטומטית את הבדיקות הנכונות. |
test:e2e |
הרצת הבדיקות מקצה לקצה, כמו הבדיקות של הפרוטוקול לכל הכלים. |
test:presubmit:quiet |
הכלי יוצר את כל בדיקות היחידות, ה-linters והניתוחים של הגרפים לפני שליחת הקוד בפורמט פחות מפורט ל-CI או ל-presubmit hook. |
test:presubmit |
ה-build כולל את כל בדיקות היחידות, ה-linters והניתוחים של התרשימים שנעשים לפני שליחת הקוד, בפורמט מפורט יותר לפיתוח מקומי. |
test:all |
הפעלת כל הבדיקות (בדיקות יחידה ובדיקות מקצה לקצה), כלי איתור שגיאות בקוד וניתוח גרפים בפורמט מפורט יותר לפיתוח מקומי. |
עדכון המיפוי של @IntDef
@IntDef
הוא הערה שמשמשת ב-Android כדי להגביל את הערכים האפשריים של מספר שלם. Winscope משתמש במיפוי של ההערות האלה כדי להציג את שם הערך במקום את המספר השלם.
כדי לעדכן את המיפוי של @IntDef
:
כדי להריץ את מעבד הקדם של ההערות, צריך לבנות את
:framework-minus-apex-intdefs
:mp :framework-minus-apex-intdefs
מעתיקים את קובץ ה-
intDefMapping.json
שנוצר למאגר של ה-prebuilts:$ 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
.
פקודות אחרות
בנוסף ל-build ולבדיקות, סקריפטים של 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
המצב הזה מתרחש כאשר קובץ המעקב נוצר עם הגדרת proto חדשה, שמכילה שדות חובה חדשים.
- חשוב לוודא שפותחים את המעקב בגרסה הנכונה של Winscope (master, S או R).
אם יוצרים את השדה החדש ב-proto, צריך לבצע קומפילציה מחדש של ה-protos ב-Winscope באמצעות
npm run build:protos
.
גרסאות מסוימות של יחסי התלות המותקנים שגויות (ה-build נכשל)
- מבטלים את השינויים ב-
package.json
וב-package-lock.json
. מסירים אתnode_modules
. מריצים שוב אתnpm install
.
- מבטלים את השינויים ב-
הוספת שדה חדש לאחד מקובצי ה-proto. איך מציגים אותו?
- Winscope משתמש בהגדרות ה-proto מהזמן שבו הוא עבר הידור, כך ששדות חדשים לא יופיעו כברירת מחדל. כדי להציג שדות חדשים, צריך ליצור מחדש את ה-protos באמצעות
npm run build:protos
.
- Winscope משתמש בהגדרות ה-proto מהזמן שבו הוא עבר הידור, כך ששדות חדשים לא יופיעו כברירת מחדל. כדי להציג שדות חדשים, צריך ליצור מחדש את ה-protos באמצעות