במאמר הזה מוסבר איך ליצור מכשיר Cuttlefish בהתאמה אישית. Cuttlefish כולל סוגי מכשירים מוגדרים מראש בגורמי צורה שונים, כמו שמופיע ב-AndroidProducts.mk. בנוסף לאפשרויות ההתאמה האישית הכלליות של המכשיר שמתוארות במאמר הוספת מכשיר חדש, אפשר לבצע התאמות אישיות ספציפיות ל-Cuttlefish, כמו הגדרות קבועות מראש של לוח מכשיר וירטואלי (vsoc_x86_64, vsoc_arm64, vsoc_riscv64), קבצים בינאריים מוכנים מראש של ליבת מערכת ההפעלה, קבצים בינאריים מוכנים מראש של טוען האתחול, מאפייני ספק, הגדרות מערכת, תמיכה בווירטואליזציה מקוננת ואפשרויות תצוגה. רשימה מלאה של הפרמטרים של משך זמן של תהליך build שאפשר להתאים אישית מופיעה במאמר device/google/cuttlefish/vsoc_x86_64/phone/aosp_cf.mk.
בשלבים הבאים מוסבר איך ליצור מכשיר x86-64 פיקטיבי big_phone בגודל שגדול פי עשרה ממכשיר Cuttlefish רגיל.
העברה בירושה מיעד קיים
כדי להעביר בירושה מיעד קיים:
- יוצרים ספרייה בשם
device/google/cuttlefish/vsoc_x86_64/big_phone. - יוצרים קובץ
aosp_cf.mkבספרייה הזו.
$(call inherit-product, device/google/cuttlefish/vsoc_x86_64_phone.mk)
PRODUCT_NAME: big_phone
PRODUCT_DEVICE: vsoc_x86_64
PRODUCT_MANUFACTURER := My Company
PRODUCT_MODEL: My Company very large phone
PRODUCT_VENDOR_PROPERTIES += \
ro.soc.manufacturer=$(PRODUCT_MANUFACTURER) \
ro.soc.model=$(PRODUCT_DEVICE)
הוספת יעד לארוחת צהריים
מוסיפים את היעד lunch לקובץ device/google/cuttlefish/AndroidProducts.mk:
PRODUCT_MAKEFILES := \
...
big_phone:$(LOCAL_DIR)/vsoc_x86_64/big_phone/aosp_cf.mk
...
lunch big_phoneהגדרת JSON
כדי להפעיל את מכשיר Cuttlefish, יוצרים קובץ הגדרות JSON בשם big_phone.json עם מבנה היררכי שמייצג את מאפייני המכשיר. לדוגמה, בקובץ ההגדרות בפורמט JSON, אפשר לציין אפשרויות כמו זיכרון ה-RAM שהוקצה למכונה הווירטואלית והגדרות התצוגה. הקובץ הזה לא צריך להיות בעץ AOSP.
פרטים על פורמט JSON להגדרות מופיעים במאמר הגדרות קנוניות.
{
"instances":
[
{
"vm": {
"memory_mb": 40960,
},
"graphics": {
"displays": [
{
"width": 7200,
"height": 12800,
"dpi": 320
}
]
}
}
]
}
כדי להפעיל את ההגדרה, מריצים את הפקודה:
cvd create --config_file=big_phone.jsonהרצת launch_cvd (גרסה קודמת)
חלק ממאפייני ההגדרה לא זמינים בפורמט ההגדרה ההיררכי של JSON. בהגדרות כאלה, אפשר להגדיר ערכי ברירת מחדל של דגלים באמצעות מילון JSON ברמה אחת.launch_cvd רשימה מלאה של כל אפשרויות ההגדרה זמינה במאמר cf_flags_validator.cpp.
בדוגמה הבאה מוסבר איך לשנות את ערכי ברירת המחדל של אפשרויות הדגל launch_cvd באמצעות קובץ הגדרה בפורמט JSON, ואיך להפעיל את Cuttlefish Launcher כדי להפעיל את ההגדרה המותאמת אישית.
יוצרים קובץ הגדרות JSON,
device/google/cuttlefish/shared/config/config_big_phone.json, עם ערכים מותאמים אישית.{ "x_res": 7200, "y_res": 12800, "dpi": 320, "memory_mb": 40960, "ddr_mem_mb": 49150, }כדי שמפעיל Cuttlefish יפעיל את ההגדרה
big_phone, צריך לוודא שיש לו גישה לקובץdevice/google/cuttlefish/shared/config/config_big_phone.json. לשם כך:מגדירים את ארטיפקט ה-JSON כארטיפקט של בנייה על ידי הוספת פסקה
prebuilt_etc_hostבקובץdevice/google/cuttlefish/shared/config/Android.bp.prebuilt_etc_host { name: "cvd_config_big_phone.json", src: "config_big_phone.json", sub_dir: "cvd_config", }כדי להוסיף את הצהרת ארטיפקט הבנייה שנוצר ל-Cuttlefish Launcher, מריצים את הפקודה הבאה ב-
device/google/cuttlefish/shared/device.mk.$(call soong_config_append,cvd,launch_configs,cvd_config_big_phone)יוצרים קובץ
android_info.txtומקשרים את ההגדרהbig_phoneלקובץ על ידי הוספת השורה הבאה לקובץdevice/google/cuttlefish/vsoc_x86_64/big_phone/aosp_cf.mk:TARGET_BOARD_INFO_FILE := device/google/cuttlefish/vsoc_x86_64/<var>big_phone</var>/android-info.txtמזינים את סוג המכשיר בתווית
big_phoneconfig על ידי מילויdevice/google/cuttlefish/vsoc_x86_64/big_phone/android-info.txtבהגדרות הבאות:config=big_phone