במאמר הזה מוסבר איך ליצור מכשיר Cuttlefish בהתאמה אישית. Cuttlefish כולל סוגי מכשירים מוגדרים מראש בגורמי צורה שונים, כמו שמופיע בAndroidProducts.mk
. בנוסף לאפשרויות הכלליות להתאמה אישית של המכשיר שמתוארות במאמר הוספת מכשיר חדש, אפשר לבצע התאמות אישיות ספציפיות ל-Cuttlefish, כמו הגדרות קבועות מראש של לוח מכשיר וירטואלי (vsoc_x86_64, vsoc_arm64, vsoc_riscv64), קבצים בינאריים מוכנים מראש של ליבת המערכת, קבצים בינאריים מוכנים מראש של טוען האתחול, מאפייני ספק, הגדרות מערכת, תמיכה בווירטואליזציה מקוננת ואפשרויות תצוגה. רשימה מלאה של הפרמטרים של זמן הבנייה שאפשר להתאים אישית מופיעה במאמר 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. בהגדרות כאלה, אפשר להגדיר ערכי ברירת מחדל של launch_cvd
flag
ממילון JSON ברמה אחת. רשימה מלאה של כל אפשרויות ההגדרה זמינה במאמר 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", }
כדי להוסיף את ההצהרה של ארטיפקט ה-build שנוצר למפעיל של Cuttlefish, מריצים את הפקודה הבאה ב-
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_phone
config על ידי מילויdevice/google/cuttlefish/vsoc_x86_64/big_phone/android-info.txt
בהגדרות הבאות:config=big_phone