כשמפתחים ומפיצים מכשירים חדשים, היצרנים יכולים להגדיר ולציין את גרסת היעד של FCM במניפסט המכשיר (DM). כשמשדרגים את קובץ האימג' של הספק למכשירים ישנים, הספקים יכולים להחליט להטמיע גרסאות HAL חדשות ולהגדיל את גרסת היעד של FCM.
פיתוח מכשירים חדשים
כשמגדירים את גרסת היעד של FCM במכשירים חדשים:
- משאירים את
DEVICE_MANIFEST_FILE
ו-PRODUCT_ENFORCE_VINTF_MANIFEST
לא מוגדרים. - מטמיעים HALs לגרסה היעד של FCM.
- כותבים את קובץ המניפסט הנכון של המכשיר.
- כותבים את גרסת היעד של FCM בקובץ המניפסט של המכשיר.
- מגדירים את
DEVICE_MANIFEST_FILE
. - מגדירים את
PRODUCT_ENFORCE_VINTF_MANIFEST
לערךtrue
.
השקת מכשירים חדשים
כשמכשיר חדש יוצא לשוק, צריך לקבוע את גרסת היעד הראשונית של FCM ולהצהיר עליה במניפסט של המכשיר כמאפיין target-level
ברכיב <manifest>
ברמה העליונה.
לדוגמה, במכשירים שמופעלים עם Android מגרסה 9, גרסת היעד של FCM צריכה להיות 3 (הגרסת היעד העדכנית ביותר כרגע). כדי להצהיר על כך במניפסט של המכשיר:
<manifest version="1.0" type="device" target-level="3"> <!-- ... --> </manifest>
שדרוג של קובץ האימג' של הספק
כשמשדרגים את קובץ האימג' של הספק במכשיר ישן, הספקים יכולים להחליט אם להטמיע גרסאות HAL חדשות ולהגדיל את גרסת היעד של FCM.
שדרוג HALs
במהלך שדרוג של קובץ אימג' של ספק, הספקים יכולים להטמיע גרסאות HAL חדשות, בתנאי ששם ה-HAL, שם הממשק ושם המכונה זהים. לדוגמה:
- מכשירי Google Pixel 2 ו-Pixel 2 XL שפורסמו עם גרסת היעד 2 של FCM, שבה הופעלה HAL 2.0 הנדרשת של האודיו
android.hardware.audio@2.0::IDeviceFactory/default
. - ב-HAL 4.0 של אודיו, שפורסם עם Android 9, אפשר להשתמש ב-OTA מלא במכשירי Google Pixel 2 ו-Pixel 2 XL כדי לשדרג ל-HAL 4.0, שמטמיע את
android.hardware.audio@4.0::IDeviceFactory/default
. - למרות ש-
compatibility_matrix.2.xml
מציין רק את audio 2.0, הדרישה לתמונת ספק עם יעד של FCM בגרסה 2 הופחתה כי מסגרת Android 9 (FCM בגרסה 3) מתייחסת ל-audio 4.0 כתחליף ל-HAL של audio 2.0 מבחינת הפונקציונליות.
לסיכום, מכיוון ש-compatibility_matrix.2.xml
מחייב אודיו 2.0 ו-compatibility_matrix.3.xml
מחייב אודיו 4.0, הדרישות הן:
גרסת FCM (מערכת) | גרסת היעד של FCM (ספק) | דרישות |
---|---|---|
2 (8.1) | 2 (8.1) | Audio 2.0 |
3 (9) | 2 (8.1) | אודיו 2.0 או 4.0 |
3 (9) | 3 (9) | Audio 4.0 |
שדרוג גרסת היעד של FCM
במהלך שדרוג של קובץ אימג' של ספק, הספקים יכולים גם להגדיל את גרסת היעד של FCM כדי לציין את גרסת היעד של FCM שבה קובץ האימג' המשופר של הספק יכול לפעול. כדי לשדרג את גרסת היעד של FCM במכשיר, הספקים צריכים:
- מטמיעים את כל הגרסאות החדשות הנדרשות של HAL עבור גרסת היעד של FCM.
- משנים את הגרסאות של HAL בקובץ המניפסט של המכשיר.
- משנים את גרסת היעד של FCM בקובץ המניפסט של המכשיר.
- מסירים גרסאות HAL שהוצאו משימוש.
לדוגמה, מכשירי Google Pixel ו-Pixel XL הושקו עם Android 7.0, ולכן גרסת היעד של FCM צריכה להיות לפחות מהדור קודם. עם זאת, מניפסט המכשיר מצהיר על גרסת היעד של FCM 2 כי קובץ האימג' של הספק עודכן בהתאם ל-compatibility_matrix.2.xml
:
<manifest version="1.0" type="device" target-level="2">
אם הספקים לא יטמיעו את כל הגרסאות החדשות הנדרשות של HAL או לא יסירו גרסאות HAL שהוצאו משימוש, לא ניתן יהיה לשדרג את גרסת היעד של FCM.
לדוגמה, במכשירי Google Pixel 2 ו-Pixel 2 XL היעד הוא גרסה 2 של FCM.
הן מטמיעות חלק מ-HALs הנדרשים על ידי compatibility_matrix.3.xml
(כמו אודיו 4.0, בריאות 2.0 וכו'), אבל הן לא מסירות את android.hardware.radio.deprecated@1.0
, שהוצא משימוש בגרסה 3 של FCM (Android 9). לכן, אי אפשר לשדרג את גרסת היעד של FCM במכשירים האלה לגרסה 3.
איך מגדירים דרישות לליבת המערכת במהלך עדכון OTA
עדכון מכשירי Android מגרסה 9 ומטה
במכשירים עם Android 9 ומטה, חשוב לוודא שה-CLs הבאים נבחרו בקפידה:
השינויים האלה כוללים את דגל ה-build PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS
, והדגל לא מוגדר במכשירים שהושקו עם Android מגרסה 9 ומטה.
- כשמעדכנים ל-Android 10, לקוחות OTA במכשירים עם Android 9 וגרסאות ישנות יותר לא בודקים בצורה נכונה את דרישות הליבה בחבילת ה-OTA. השינויים האלה נדרשים כדי להסיר את דרישות הליבה מחבילת ה-OTA שנוצרה.
-
כשמעדכנים ל-Android 11, אפשר להגדיר את דגל ה-build
PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS
כדי לבדוק את התאימות ל-VINTF בזמן היצירה של חבילת העדכון.
מידע נוסף על הדגל הזה של ה-build זמין במאמר עדכון מכשירים מ-Android 10.
עדכון מכשירים מ-Android 10
ב-Android 10 מופיע דגל build חדש, PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS
. במכשירים שהושקו עם Android 10, הדגל הזה מוגדר באופן אוטומטי ל-true
. כשהדגל מוגדר ל-true
, סקריפט מחלץ את גרסת הליבה ואת הגדרות הליבה מקובץ האימג' של הליבה שהותקן.
- כשמתעדכנים ל-Android 10, חבילת העדכון ב-OTA מכילה את הגרסה וההגדרה של הליבה. לקוחות OTA במכשירים עם Android מגרסה 10 קוראים את המידע הזה כדי לבדוק את התאימות.
- כשמעדכנים ל-Android 11, המערכת קוראת את הגרסה וההגדרות של הליבה כדי לבדוק את התאימות.
אם הסקריפט לא מצליח לחלץ את המידע הזה מקובץ האימג' של הליבה, מבצעים אחת מהפעולות הבאות:
- עורכים את הסקריפט כך שיתמוך בפורמט הליבה שלכם ומשתתפים ב-AOSP.
- מגדירים את
BOARD_KERNEL_VERSION
לגרסה של הליבה ואתBOARD_KERNEL_CONFIG_FILE
לנתיב של קובץ התצורה של הליבה שנוצר.config
. צריך לעדכן את שני המשתנים כשמתעדכנת קובץ האימג' של הליבה. - לחלופין, אפשר להגדיר את
PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS
לערךfalse
כדי לדלג על בדיקת הדרישות של הליבה. לא מומלץ לעשות זאת כי אי-תאימות כלשהי מוסתרת ומתגלה רק כשמריצים בדיקות VTS אחרי העדכון.
אפשר להציג את קוד המקור של הסקריפט לחילוץ מידע מהליבה
extract_kernel.py
.