Android Studio for Platform (ASfP) היא סביבת הפיתוח המשולבת (IDE) המומלצת לפיתוח פלטפורמת Software-Defined Vehicle (SDV) של Android Automotive OS (AAOS). ASfP תומך בכל השפות שבהן נעשה שימוש בפלטפורמת AAOS SDV, כולל Rust לחבילות שירות SDV.
בדף הזה מוסבר רק על ההגדרה הספציפית של SDV. מידע נוסף על תכונות כלליות ותהליכי עבודה של ASfP זמין במאמר Android Studio for Platform.
ASfP פועל רק ב-Linux בגרסת 64 ביט עם מעבדי x86-64. אפשר להשתמש בו בתחנת עבודה מקומית של Linux או בענן. מידע נוסף על הגדרת הענן זמין במאמר בנושא פיתוח בענן.
התקנה של ASfP
מידע נוסף על הורדה והתקנה של ASfP ועל בדיקת דרישות המערכת זמין במאמר התקנה של Android Studio for Platform.
יצירת אינדקס של תהליך תשלום בפלטפורמה צורכת הרבה זיכרון, במיוחד כשמריצים גם מכשירי Cuttlefish מרובי מכונות וירטואליות באותה מכונה. אם ASfP פועל לאט, צריך להגדיל את גודל הערימה המקסימלי בהגדרות הזיכרון של ASfP כך שיתאים לפרויקט ולמחשב, ולהגביל את הפרויקט לספריות שבהן אתם עובדים.
יצירת פרויקט SDV
לפני שמתחילים, צריך לאתחל, לסנכרן ולבנות את התשלום של AAOS SDV. מידע נוסף על הגדרת תהליך התשלום זמין במאמרים מיקום הקוד והורדה, יצירה והפעלה.
כדי ליצור פרויקט SDV, פועלים לפי השלבים הבאים:
- יוצרים פרויקט חדש ב-ASfP ובוחרים את השורש של התשלום שלכם ב-AAOS SDV כמאגר התשלום. מידע נוסף על השלבים באשף זמין במאמר יצירה או ייבוא של פרויקט.
- אחרי ש-ASfP יוצר את הפרויקט, בוחרים באפשרות ASfP > Project > Open Config (ASfP > פרויקט > פתיחת הגדרות) כדי לפתוח את הקובץ
.asfp-project. מחליפים את התוכן של הקובץ בדוגמה הבאה, ואז מגדירים את
repoלנתיב של הקופה:repo: /path/to/sdv_source lunch: sdv_core_cf-aosp_current-userdebug directories: include: - system/software_defined_vehicle/samples other_languages: - rustמעדכנים את
lunchו-directoriesלאזור שבו אתם עובדים. כדי שהאינדוקס והסנכרון יהיו מהירים, כדאי לכלול רק את הספריות שאתם משנים באופן פעיל. בטבלה הבאה מפורטים יעדים וספריות נפוצים של SDV:התמקדות בפיתוח SDV יעד lunchdirectoriesמומלציםחבילות שירות SDV sdv_core_cf-aosp_current-userdebugקטלוג השירותים וספריית החבילות, כמו system/software_defined_vehicle/samplesשילוב של פלטפורמת SDV Core sdv_core_cf-aosp_current-userdebugsystem/software_defined_vehicle/middleware,system/software_defined_vehicle/automotive_services,device/google/sdvSDV Gateway ב-SDV IVI sdv_ivi_cf-aosp_current-userdebugsystem/software_defined_vehicle/sdv_gateway,system/software_defined_vehicle/samples/sdv_gateway,packages/services/Carשמירה על בטיחות בהצגה של מודעות במדיה ב-SDV sdv_media_har_cf-aosp_current-userdebugpackages/services/display_safety,device/google/sdv_display_safetyהצגת בטיחות ב-SDV IVI sdv_ivi_cf_ds-aosp_current-userdebugpackages/apps/Car/DriverUI,packages/services/display_safety/serviceאם בתהליך התשלום שלכם נעשה שימוש במניפסט
trunk_staging, צריך להחליף את-aosp_current-userdebugב--trunk_staging-userdebug. כדי לעיין גם בקוד של פלטפורמה מקורית, מוסיפיםcppל-other_languages. מידע נוסף על כל אפשרויות ההגדרה זמין במאמר פרמטרים של הגדרות.כדי לשמור את השינויים, לוחצים על File > Sync Project (קובץ > סנכרון פרויקט).
פריסת חבילות שירות SDV
ASfP כולל פלאגין SDV שמפיץ APEX שמכיל את חבילות השירות שלכם ישירות למכשיר SDV פעיל. הפלאגין מושבת כברירת מחדל. כדי להשתמש בו, צריך להפעיל את הפלאגין SDV בהגדרות > פלאגינים. מידע נוסף על חבילות APEX זמין במאמר פיתוח ופריסה של חבילות שירות.
אופן הפריסה תלוי בשאלה אם קובץ ה-APEX כבר נמצא במכשיר:
- אם ה-APEX כבר מותקן, אפשר לפרוס את השינויים ישירות מ-ASfP.
- אם קובץ ה-APEX חדש, צריך לבנות מחדש את קובץ אימג' של המערכת ולהפעיל אותה מחדש קודם, או להשתמש בקובץ אימג' של המערכת שכולל את המפתח ששימש לחתימה על קובץ ה-APEX. אחרי זה, אפשר לבצע פריסה מ-ASfP.
כדי לפרוס חבילת שירות APEX, מבצעים את השלבים הבאים:
- מפעילים את מכשיר ה-SDV באמצעות התוסף Cuttlefish. מידע נוסף זמין במאמר בנושא הפעלת מכשירי SDV ב-Cuttlefish.
- פותחים את קובץ
apex/Android.bpשל חבילת השירותים ולוחצים על סמל ההפעלה במרווח לצד הבלוקapex {. - בתפריט שנפתח, בוחרים באפשרות Run 'Deploy APEX_NAME' (הפעלת הפריסה של ). אפשר גם ליצור את ה-APEX בלי לפרוס אותו או לשנות את הגדרת ההפעלה מאותו תפריט.
הפעלת מכשירי SDV ב-Cuttlefish
ASfP כולל פלאגין Cuttlefish שיוצר ומריץ מכשירי Cuttlefish מקומיים. התוסף צריך את מארח ה-Cuttlefish. אם המארח של כלי התזמור לא זמין, ASfP מציג הוראות להגדרתו.
כדי ליצור מכשיר SDV, פועלים לפי השלבים הבאים:
- בוחרים באפשרות Tools > Device Manager (כלים > המרכז לניהול מכשירים), לוחצים על + ובוחרים באפשרות Create Cuttlefish Device (יצירת מכשיר Cuttlefish).
- כדי ליצור הגדרה של כמה מכונות וירטואליות, בוחרים באפשרות From canonical configuration ויוצרים או מייבאים הגדרה עבור ההגדרה שלכם, כמו SDV Core עם SDV IVI, או SDV Media עם SDV IVI לבטיחות התצוגה. כדי ליצור מכונה וירטואלית אחת, בוחרים באפשרות From local Android source tree checkout (מתוך מאגר מקומי של עץ מקורות של Android).
כדי לראות את כל התצוגות של מכונות וירטואליות במסך אחד ולגשת לאפשרויות נוספות של המכשיר, משתמשים בחלון של הכלי Cuttlefish. כדי לפתוח אותו, לוחצים על סמל האפשרויות הנוספות בחלונית הצדדית ובוחרים באפשרות Cuttlefish, או מחפשים את Cuttlefish דרך עזרה > חיפוש פעולה. אפשר גם לראות תצוגות נפרדות במכשירים פעילים. מכיוון ש-SDV Core פועל בלי תצוגה, צריך להשתמש ב-Logcat ובטרמינל כדי לבדוק אותו.
ניפוי באגים ובדיקה
במאמרים ניפוי באגים בקוד הפלטפורמה ובדיקת קוד הפלטפורמה מוסבר איך לבצע ניפוי באגים ובדיקות ב-ASfP. מידע נוסף על הגדרת CodeLLDB לניפוי באגים בחבילות שירות של Rust זמין במאמר ניפוי באגים ב-Rust.
כשמצרפים את מאתר הבאגים לחבילת שירות, צריך לצרף אותו לתהליך שמארח את חבילת השירות. שמות התהליכים הם בפורמט <bundle_name>:<instance_name>, למשל OrchestratorSampleRustServiceBundle:sample-main-no-conditions. הפקודה הבאה מציגה רשימה של תהליכים תואמים ואת מזהי התהליכים שלהם:
adb shell ps -A | grep <bundle_name>
מידע נוסף על תהליכי עבודה לניפוי באגים ב-SDV, כמו חיבור למספר מכשירים והצגת יומנים, זמין במאמר ניפוי באגים ב-SDV.
עריכה של קובצי VSIDL
ASfP כולל את שרת השפה VSIDL (vsidl-lsp). מידע נוסף על הגדרת הקטלוג לשרת השפה זמין במאמר עדכונים אוטומטיים של קטלוג ושילוב של LSP. אם הקטלוג כולל קובץ CATALOG_UPDATE, הכלי לעריכה מספק את התכונות הבאות לקובצי .vsidl:
- אימות בזמן אמת: העורך מדגיש מילות מפתח של VSIDL ומציג שגיאות תחביר, סוגים לא פתורים ושגיאות אימות של VSIDLC בחלון Problems. מידע נוסף על כללי האימות וקודי השגיאה שלהם זמין במפרט של שפת VSIDL.
- השלמה אוטומטית ותיעוד: אפשר ללחוץ על Ctrl+רווח כדי לקבל הצעות למילות מפתח, להודעות, לשירותים, לנושאים ולערוצים, ועל Ctrl+Q כדי לראות הערות תיעוד.
- ניווט ועיצוב: אפשר להקיש על Ctrl+B כדי לעבור להגדרות של
.vsidlאו.proto, על Alt+Shift+F7 כדי למצוא הפניות, על Ctrl+F12 כדי להציג את מבנה הקובץ ועל Ctrl+Alt+L כדי לעצב את הקובץ.
הוספת הקשר של SDV לעוזרי AI
ASfP כולל את Gemini ב-Android Studio. מידע נוסף על התכונות של ASfP זמין במאמר היכרות עם Android Studio for Platform. כדי לעזור ל-Gemini או לעוזר תכנות אחר מבוסס-AI לפעול לפי מוסכמות SDV, מוסיפים קובץ AGENTS.md לספריית הבסיס של קטלוג SDV. מידע נוסף על קובצי סוכנים זמין במאמר התאמה אישית של Gemini באמצעות קובצי AGENTS.md.
הדוגמה הבאה היא נקודת התחלה שאפשר להתאים לקטלוג שלכם:
# AAOS SDV service catalog rules
- Implement SDV service bundles in Rust under `services/<BundleName>/src/`.
- Keep `.proto` files limited to Protobuf `message`, `enum`, and `service` definitions. Define service bundles, APEX packaging, VM placement, and SOME/IP mappings in `.vsidl` files.
- Regenerate middleware with `vsidlc` after you change `.vsidl` or `.proto` files, and leave generated files unmodified.
- Use `PascalCase` for service bundle names and lowercase `kebab-case` for topic and channel names.
- Run `vsidlc --explain <CODE>` to look up a VSIDLC error code.