סקירה כללית של פרויקטים ותהליכי עבודה ב-Soong

פרויקט ב-Android Studio for Platform (ASfP) מכיל את כל מה שמגדיר את סביבת העבודה של בסיס הקוד של AOSP, החל מקוד המקור והנכסים ועד לקוד הבדיקה ותצורות ה-build של Soong.

‫ASfP מבוסס על IntelliJ Workspace Model, והוא יוצר פרויקטים גדולים של פלטפורמות ומשחזר את מודל הפרויקט מתמונות מצב שנשמרו במטמון בזמן ההפעלה. התוכן בספרייה out/ וקובצי gen שנוצרו לא נכללים בהיקפי החיפוש של הפרויקט, כדי שהניווט בסמלים ובקבצים יישאר מהיר.

הגדרות אישיות של פרויקט (.asfp-project)

קובץ ה-YAML‏ .asfp-project, שנמצא בתיקיית הבסיס של הפרויקט, שולט בהגדרות הפרויקט של ASfP. בקובץ הזה מוגדרות הספריות, מודולי Soong, השפות ודגלי הבנייה שנכללים בסביבת העבודה.

אפשר לפתוח את הגדרות הפרויקט בכל שלב באחת מהדרכים הבאות:

  • בתפריט הראשי, בוחרים באפשרות ASfP > Project > Open Config (ASfP > פרויקט > פתיחת הגדרות).
  • לוחצים לחיצה כפולה על .asfp-project בתיקיית הבסיס של חלון הכלי Project.
  • בסרגל הכלים של חלון הכלי Soong, לוחצים על Open Config (פתיחת ההגדרה).

אחרי שעורכים את .asfp-project, צריך להריץ סנכרון של הפרויקט כדי שהשינויים ייכנסו לתוקף.

תבניות פרויקטים שאפשר לשתף (ייצוא וייבוא)

צוותים שעובדים על אותה מערכת משנה (כמו SystemUI,‏ Settings,‏ SurfaceFlinger או Automotive) יכולים לשתף הגדרה רגילה של .asfp-project כתבנית:

  • ייצוא לתבנית: לוחצים לחיצה ימנית על הכרטיסייה של העורך .asfp-project או בוחרים באפשרות ASfP > Project > Export Config to Template כדי לשמור קובץ תבנית שאפשר לשתף.

    ייצוא של הגדרות פרויקט ASfP לתבנית שאפשר לשתף

  • ייבוא מתבנית: כשיוצרים פרויקט חדש באשף הגדרת הפרויקט, בוחרים באפשרות ייבוא מתבנית ובוחרים את קובץ ה-YAML המשותף .asfp-project כדי לאכלס מראש את הספריות, המודולים והגדרות הבנייה.

פרמטרים להגדרה

הקובץ .asfp-project תומך בפרמטרים הבאים:

repo

חובה: נתיב מוחלט לשורש של מאגר פלטפורמת Android.

repo: /path/to/aosp

lunch

חובה: יעד ההשקה שמשויך לפרויקט. משמש לכל פעולות ה-build, הסנכרון והפריסה של Soong.

lunch: aosp_cf_x86_64_phone-aosp_current-userdebug

directories

אופציונלי: ספריות שרוצים לכלול בפרויקט או להחריג ממנו (ביחס לשורש repo). ספריות עם קישורי סמלי וספריות שורש של מקורות נתמכות.

directories:
  include:
    -   frameworks/base
    -   packages/apps/Settings
  exclude:
    -   vendor
    -   out/soong

modules

אופציונלי: מודולי Soong ספציפיים שרוצים לכלול בפרויקט או להחריג ממנו. פועל בשילוב עם directories. אפשר להשתמש גם בשמות המלאים וגם בשמות המקוצרים של המודולים.

modules:
  include:
    -   SystemUI
    -   frameworks/base/services/core/java:services
  exclude:
    -   UnusedModule

test_sources

אופציונלי: נתיבים יחסיים לסימון כשורשי מקורות בדיקה כשצריך לבטל ידנית את ההיוריסטיקה האוטומטית של ASfP למקורות בדיקה.

test_sources:
  -   cts/tests/tests/example
  -   tests/mytests

other_languages

אופציונלי: התמיכה ב-Java, ב-Kotlin וב-Android.bp מופעלת כברירת מחדל. מוסיפים את cpp לתמיכה בשפות C ו-C++‎ או את rust לתמיכה בשפת Rust:

other_languages:
  -   cpp
  -   rust

build_config

אופציונלי: דגלים בהתאמה אישית או משתני סביבה שמועברים לקריאות ל-build של Soong שמופעלות על ידי ה-IDE (כולל סנכרונים, build של gutter והגדרות הפעלה):

build_config:
  flags:
    -   -j64
  env:
    SOONG_PARTIAL_COMPILE: true
    SOONG_ALLOW_MISSING_DEPENDENCIES: true

מצבי סנכרון וחלון של הכלי של Soong

ב-ASfP יש כמה דרכים לסנכרן את הפרויקט ב-IDE עם ה-checkout של AOSP, בהתאם לצרכים של תהליך העבודה. אפשר לגשת לפעולות האלה מהתפריט ASfP > Sync או מחלון הכלי Soong:

  • סנכרון פרויקט: ניתוח של הספריות והמודולים שהוגדרו ועדכון של יחסי התלות וההוספה לאינדקס של סביבת הפיתוח המשולבת.
  • סנכרון חלקי: סנכרון של קבוצת משנה מטורגטת של מודולים או ספריות, כדי לחסוך זמן כשעובדים באזור מקומי של העץ.
  • ‫No-Build Sync: מרענן את מבנה הפרויקט ואת שורשי המקור של ה-IDE בלי להריץ שלב של גרסת build של Soong. האפשרות הזו שימושית אם הוספתם או העברתם קובצי מקור, או אם כבר יצרתם גרסת build מהטרמינל.
  • ‫Sync and Full Build: שילוב של סנכרון הפרויקט עם גרסת build מלאה של Soong בשלב אחד.

בחלון הכלי Soong (View > Tool Windows > Soong) מוצגים אינדיקטורים של סטטוס בזמן אמת לכל צומת של משימת סנכרון, כפתורי גישה מהירה ל-build והרצת פקודות של Soong.


יצירה, פריסה וניווט בכלי לעריכת מודעות Android.bp

ב-ASfP יש תמיכה בעריכה משולבת של קובצי Android.bp:

בנייה, הפעלה וניפוי באגים של יעדים מהשוליים

פותחים קובץ Android.bp כלשהו בפרויקט כדי ליצור או להפעיל יעדים משני סמלים בשוליים:

  • סמל הבנייה (כל המודולים עם השמות): מופיע לצד name: בכל מודול עם שם (cc_library_shared, java_library, rust_binary, android_app ויעדי בדיקה) כדי לבנות את יעד Soong הזה (Build "<module>"‎).
  • סמל ההפעלה או הניפוי באגים (*_test,‏ *_test_host ו-android_app): לוחצים על הפעלה לצד מודול בדיקה או הצהרה android_app כדי להפעיל את המודול או לנפות בו באגים. ניפוי הבאגים של מודולים של android_test מתבצע דרך atest, ומודולים של cc_test* ושל rust_test* מופעלים ב-LLDB המובנה.

בנייה, הפעלה וניפוי באגים של מודולים מסמלי שוליים של Android.bp

הגדרות של פריסה לפי הקשר והרצה מהירה

במודולים שאפשר לפרוס בקובצי Android.bp, אפשר ליצור ולהפעיל הגדרות הפעלה של Soong Deploy בהקשר מסוים, מתוך השוליים או מתפריט ההקשר שמופיע אחרי לחיצה ימנית, עם התכונות הבאות:

  • שיטות פריסה: פריסה באמצעות adb, סקריפטים מותאמים אישית של מעטפת, adevice או flashall.
  • Pre-run Soong build hooks: Build the target Soong module automatically before deploying to your connected device or Cuttlefish virtual device.

בחירת הגדרות ההרצה של Adevice או Flashall ב-ASfP

מעבר בין קוד המקור לבין Android.bp

בכל קובץ מקור או ספרייה בחלון של הכלי Project, בכרטיסיית העריכה או בתפריט ההקשר של העריכה, לוחצים לחיצה ימנית ובוחרים באפשרות Open Corresponding Android.bp File. ‫ASfP מאתר ומדגיש את הצהרת המודול Android.bp שמקמפלת את הקובץ הזה, פותרת בלוקים של defaults, תבניות של תווים כלליים לחיפוש srcs וקישורים סימבוליים.

פעולה בתפריט ההקשר לפתיחת קובץ Android.bp תואם

מסמכי תיעוד בנושא הסברים קצרים ואינטליגנציה של עורך Android.bp

  • ניווט בין קבצים וספירת שימושים: לוחצים על Control ועל הפניה למודול, קובץ srcs או soong_config_module_type כדי לעבור להצהרה שלו. הצעות מוטמעות N Usages שניתן ללחוץ עליהן מופיעות לצד שמות המודולים ויעדי srcs המשותפים, ומודולים של ספריות שלא מפנים אליהם מעומעמים באופן חזותי.
  • הסברים קצרים על מאפייני Soong: החזיקו את הסמן מעל כל מאפיין בקובץ Android.bp – כולל מאפיינים ברמת הארכיטקטורה או היעד בקטעים target,‏ arch ו-multilib – כדי לראות את החתימה של סוג ה-Soong וההסבר שלו.

הסברים קצרים על מאפיינים ב-Android.bp ורמזים מוטבעים לשימוש


ניהול מכשירים וירטואליים ושיקוף מסך מרובה ב-Cuttlefish

‫ASfP כולל פלאגין מובנה של Cuttlefish למפתחים של פלטפורמות, של Android Automotive OS ‏(AAOS) ושל רכבים מוגדרי תוכנה (SDV) שעובדים עם מכשירים וירטואליים של Cuttlefish שנוצרו באופן מקומי:

  • הגדרת כמה מכשירים ב-Device Manager: אתם יכולים ליצור ולנהל הגדרות של כמה מכשירים וירטואליים מסוג Cuttlefish ב-Device Manager באמצעות ה-checkout המקומי של AOSP ($ANDROID_BUILD_TOP ו-$ANDROID_PRODUCT_OUT).
  • שיקוף של תצוגה מרובת מסכים בחלון הכלים של Cuttlefish: פותחים את View > Tool Windows > Cuttlefish כדי להשתמש בשיקוף מובנה של תצוגה מרובת מסכים ב-Cuttlefish. כך אפשר לראות ולקיים אינטראקציה עם כמה מסכים של מערכות לרכב בו-זמנית עבור תהליכי עבודה של AAOS ו-SDV.

חלון של הכלי של Cuttlefish ושיקוף מסך של ריבוי מסכים ב-ASfP