בדף הזה נסביר איך יוצרים מכשיר Cuttlefish בהתאמה אישית. Cuttlefish כולל סוגי מכשירים מוגדרים מראש בגורמי צורה שונים, כפי שמפורטים ב-AndroidProducts.mk
. בנוסף לאפשרויות הכלליות של התאמה אישית של המכשיר שמתוארות במאמר הוספת מכשיר חדש, אפשר לבצע התאמות אישיות ספציפיות ל-Cuttlefish. כמו למשל הגדרות קבועות מראש לתצורה של לוח מכשיר וירטואלי (vsoc_x88_64, mode_arm64, mode_riscv64), ליבה מראש של ליבה, הגדרות מובנות מראש של תוכנת אתחול, מאפייני ספק, הגדרות תצוגה בתוך מערכת, אפשרויות תצוגה וירטואלית, אפשרויות תצוגה בתוך מערכת, תמיכה בתצוגה וירטואלית. ב-device/google/cuttlefish/vsoc_x86_64/phone/aosp_cf.mk
תוכלו למצוא רשימה מלאה של הפרמטרים של זמן ה-build שאפשר להתאים אישית.
בשלבים הבאים מתואר איך ליצור מכשיר x86-64 בדיוני
big_phone
מהגודל של פי 10 מגודל של מכשיר דגים רגיל.
ירושה מיעד קיים
כדי לקבל בירושה מיעד קיים:
- יוצרים ספרייה של
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
הפעלת start_cvd (מדור קודם)
מאפיינים מסוימים של הגדרות אישיות לא זמינים בפורמט ההיררכי של הגדרות JSON. בהגדרות כאלה, אפשר להגדיר את ערכי ברירת המחדל של הדגל launch_cvd
ממילון JSON ברמה אחת. לרשימה המלאה של כל אפשרויות ההגדרה: cf_flags_validator.cpp
.
הדוגמה הבאה מראה איך לשנות את ערכי ברירת המחדל של אפשרויות הדגל launch_cvd
באמצעות קובץ תצורה של JSON, ולאפשר למרכז האפליקציות ל-Cuttlefish להפעיל את ההגדרות האישיות בהתאמה אישית.
יוצרים קובץ תצורה של 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, }
כדי להפעיל את ההגדרה
big_phone
במרכז האפליקציות של ה-Cuttlefish, צריך לוודא שיש לו גישה לקובץdevice/google/cuttlefish/shared/config/config_big_phone.json
באמצעות הפעולות הבאות:כדי להצהיר על פריט ה-JSON כפריט build, מוסיפים את הבית
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", }
מוסיפים את ההצהרה של פריט המידע שנוצר בתהליך הפיתוח (Artifact) שנוצרת למרכז האפליקציות ב-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
, מאכלסים אתdevice/google/cuttlefish/vsoc_x86_64/big_phone/android-info.txt
כך:config=big_phone