פרויקט ב-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 כדי לשמור קובץ תבנית שאפשר לשתף.
ייבוא מתבנית: כשיוצרים פרויקט חדש באשף הגדרת הפרויקט, בוחרים באפשרות ייבוא מתבנית ובוחרים את קובץ ה-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, אפשר ליצור ולהפעיל הגדרות הפעלה של 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.

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

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

ניהול מכשירים וירטואליים ושיקוף מסך מרובה ב-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.
