הורדה, בנייה והפעלה

בדף הזה מוסבר איך להוריד, לבנות ולהפעיל את AAOS SDV ב-Cuttlefish.

אתחול לקוח Repo

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

  1. יוצרים ספריית עבודה ועוברים אליה, למשל sdv:

    mkdir WORKING_DIRECTORY
    cd WORKING_DIRECTORY
  2. מאתחלים את ספריית העבודה לצורך בקרת מקור:

    בדוגמה הזו נשתמש בענף 26Q2-fs-release.

    RELEASE=26Q2-fs-release
    repo init -u https://partner-android.googlesource.com/platform/vendor/pdk/generic/fs/manifest/ -b $RELEASE

    האפשרות -u היא חובה ומזהה קובץ מניפסט, שהוא קובץ XML שמציין איפה ממוקמים פרויקטים שונים של Git במקור של Android בתוך ספריית העבודה. בדוגמה הזו, שם קובץ המניפסט לא מצוין, ולכן הפקודה משתמשת בקובץ המניפסט שמוגדר כברירת מחדל (default.xml).

    האפשרות -b מציינת את הענף שאתם מאתחלים.

    הפלט צריך לכלול את ההודעה:

    repo has been initialized in path_to_working_directory

הורדת המקור של AAOS SDV

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

repo sync -c -j8

הארגומנט -c מורה ל-Repo לאחזר את ענף המניפסט הנוכחי מהשרת. הפקודה -j8 מפצלת את הסנכרון בין השרשורים כדי שהסנכרון יסתיים מהר יותר.

הגדרת סביבת ה-build

בספריית העבודה, מריצים את הסקריפט envsetup.sh כדי להגדיר את סביבת הפיתוח:

source build/envsetup.sh

הסקריפט הזה מייבא כמה פקודות שמאפשרות לעבוד עם קוד המקור של Android, כולל הפקודות שמופיעות בדף הזה. כדי לראות את המקור של הסקריפט, אפשר לעיין במאמר platform/build/envsetup.sh. כדי להציג את העזרה המובנית, מקלידים hmm.

בחירת יעד

לפני שיוצרים SDV, צריך לזהות יעד לבנייה. כדי לזהות את יעד הבנייה, משתמשים בפקודה lunch ואחריה מחרוזת שמייצגת את היעד שלשמו אתם בונים. לדוגמה, משתמשים בפקודה הזו כדי ליצור יעד לאמולטור Cuttlefish:

lunch sdv_core_cf-trunk_staging-userdebug

הפקודה הזו בוחרת את המוצר, את הגדרת הגרסה ואת הווריאנט לבנייה, ושומרת את הבחירה בסביבה.

lunch יעדים ל-SDV מסופקים בפרויקט Git נפרד שנמצא בספרייה devices/google/sdv. תיאור מפורט של יעדים זמינים מופיע בכתובת device/google/sdv/README.md. יעדי Cuttlefish (cf) העיקריים הם:

  • sdv_core_cf-trunk_staging-userdebug – בניית תמונה של AAOS SDV Core ‏(sdv_core) שפועלת ב-Cuttlefish ‏ (cf).
  • sdv_media_cf-trunk_staging-userdebug – יצירת תמונה של AAOS SDV Core עם ממשקי API של מדיה וירטואלית של virtIO (sdv_media).
  • sdv_media_har_cf-trunk_staging-userdebug – יצירת תמונה שמרחיבה את יעד המדיה של AAOS SDV‏ (sdv_media_cf) lunch כך שיכיל את רכיב העיבוד (renderer) של זמינות גבוהה (HAR). רכיב ה-HAR פועל אוטומטית בעת האתחול.
  • sdv_ivi_cf-trunk_staging-userdebug – יצירת תמונה של מערכת מידע ובידור (IVI) ברכב שמכילה את שער ה-SDV ואפליקציות לדוגמה ב-Java.
  • sdv_ivi_cf_ds-trunk_staging-userdebug – יצירת תמונה שמרחיבה את יעד ה-SDV IVI של AAOS (sdv_ivi_cf) וכוללת הטמעה של DriverUI ושל Instrument Cluster של Display Safety.

יצירת AAOS SDV

מריצים את הפקודה הבאה כדי ליצור את היעד. בהתאם למפרט של תחנת העבודה, הבנייה הראשונה נמשכת בין 30 ל-60 דקות. הגרסאות הבאות ייבנו בזמן קצר בהרבה.

m

התוצאה של הבנייה מופיעה ב-$OUT_DIR. אם בונים יעדים שונים, כל יעד מופיע ב-$OUT_DIR.

בדיקת גרסת ה-build באמצעות Cuttlefish

אחרי שיוצרים את AAOS SDV, בודקים את ה-build באמצעות Cuttlefish.

  1. כדי להפעיל את Cuttlefish עם גרסת ה-build:

    cvd create

    ‫Cuttlefish פועל באמצעות יעד ה-build שלכם (sdv_core_cf-trunk_staging-userdebug). אחרי ש-Cuttlefish מופעל, מוצגת ההודעה הבאה:

    VIRTUAL_DEVICE_BOOT_COMPLETED
    Virtual device booted successfully
  2. מריצים את הפקודה adb כדי להתחבר ל-Cuttlefish.

  3. מריצים את הפקודה adb devices כדי לוודא שה-build פועל. מוצגת תוצאה שדומה לתוצאה הבאה:

    List of devices attached
    0.0.0.0:6520 device
  4. מריצים את הפקודה cvd stop כדי לכבות את המכשיר.

כדי להפעיל כמה מופעים של Cuttlefish עם גרסאות build שונות, אפשר לעיין במאמר Cuttlefish: ריבוי דיירים.

פתרון בעיות

בקטע הזה מוסבר איך לפתור בעיות שעלולות להתרחש במהלך ההורדה, הבנייה או ההפעלה של AAOS SDV.

שגיאות RBE

אם נתקלתם בשגיאות בהפעלת Remote Build Execution ‏ (RBE), צריך להסיר את ההגדרות של USE_RBE ושל ENABLE_RBE_BOOTSTRAP מ-.bashrc או מ-.zshrc.

‫cvd: VM manager crosvm isn't supported on this machine

אם Cuttlefish מדווח שמנהל המכונות הווירטואליות crosvm לא נתמך במחשב שלכם, מריצים את הפקודה הבאה כדי להתקין את Cuttlefish:

sudo apt install cuttlefish-common

לא נמצא cvd

אם מופיעה השגיאה cvd not found:

  1. מגדירים מחדש את הגרסה.
  2. ממשיכים עם בחירת יעד.

Cuttlefish crash loops

אם Cuttlefish נכנס ללולאת קריסה:

  1. כדי להפסיק את כל המופעים של Cuttlefish, מריצים את הפקודה cvd stop.
  2. שימוש ב-Cuttlefish כדי לבדוק מחדש את ה-build