בדף הזה מוסבר איך להוריד, לבנות ולהפעיל את AAOS SDV ב-Cuttlefish.
אתחול לקוח Repo
מגדירים את הלקוח כדי לגשת למאגר המקור של Android:
יוצרים ספריית עבודה ועוברים אליה, למשל
sdv:mkdir WORKING_DIRECTORYcd WORKING_DIRECTORYמאתחלים את ספריית העבודה לצורך בקרת מקור:
בדוגמה הזו נשתמש בענף
26Q2-fs-release.RELEASE=26Q2-fs-releaserepo 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.
כדי להפעיל את Cuttlefish עם גרסת ה-build:
cvd createCuttlefish פועל באמצעות יעד ה-build שלכם (
sdv_core_cf-trunk_staging-userdebug). אחרי ש-Cuttlefish מופעל, מוצגת ההודעה הבאה:VIRTUAL_DEVICE_BOOT_COMPLETED Virtual device booted successfullyמריצים את הפקודה
adbכדי להתחבר ל-Cuttlefish.מריצים את הפקודה
adb devicesכדי לוודא שה-build פועל. מוצגת תוצאה שדומה לתוצאה הבאה:List of devices attached 0.0.0.0:6520 deviceמריצים את הפקודה
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:
- מגדירים מחדש את הגרסה.
- ממשיכים עם בחירת יעד.
Cuttlefish crash loops
אם Cuttlefish נכנס ללולאת קריסה:
- כדי להפסיק את כל המופעים של Cuttlefish, מריצים את הפקודה
cvd stop. - שימוש ב-Cuttlefish כדי לבדוק מחדש את ה-build