פיתוח מניפסט של מכשירים

בעת הפיתוח וההפצה של מכשירים חדשים, הספקים יכולים להגדיר ולהצהיר גרסת היעד של FCM במניפסט של המכשיר. כשמשדרגים את תמונת הספק במכשירים ישנים, הספקים יכולים לבחור להטמיע גרסאות HAL חדשות ולהגדיל גרסת היעד של FCM.

פיתוח מכשירים חדשים

כשמגדירים את גרסת FCM לטירגוט של מכשירים חדשים, צריך לבצע את הפעולות הבאות:

  1. עזיבת החדר "DEVICE_MANIFEST_FILE" ו- PRODUCT_ENFORCE_VINTF_MANIFEST לא מוגדר.
  2. הטמעת HAL בגרסת היעד של FCM.
  3. כותבים את קובץ המניפסט הנכון של המכשיר.
  4. כתיבת גרסת היעד של FCM בקובץ המניפסט של המכשיר.
  5. הגדרה של DEVICE_MANIFEST_FILE.
  6. מגדירים את 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.

שדרוג HAL

במהלך שדרוג התמונה של הספק, ספקים יכולים להטמיע גרסאות HAL חדשות בתנאי ששם ה-HAL, שם הממשק ושם המכונה זהים. עבור דוגמה:

  • מכשירי Google Pixel 2 ו-Pixel 2 XL יצאו עם גרסת יעד של FCM 2, הוטמעה איכות האודיו 2.0 HAL הנדרשת android.hardware.audio@2.0::IDeviceFactory/default
  • לאודיו 4.0 HAL שהופץ עם Android במכשירי Google Pixel 2 ו-Pixel 2 XL אפשר להשתמש OTA מלא לשדרוג ל-4.0 HAL, שמטמיע android.hardware.audio@4.0::IDeviceFactory/default
  • למרות שב-compatibility_matrix.2.xml מצוין אודיו 2.0 בלבד, הדרישה בתמונת ספק עם יעד FCM בגרסה 2 כבר שוחררה בגלל שמסגרת Android 9 (גרסת FCM) 3) רואה את אודיו 4.0 כתחליף של אודיו 2.0 HAL מבחינת הפונקציונליות.

לסיכום, מכיוון שהמשפט compatibility_matrix.2.xml דורש לאודיו 2.0 ו-compatibility_matrix.3.xml נדרש אודיו 4.0, אלה הדרישות:

גרסת FCM (מערכת) גרסת היעד של FCM (ספק) הדרישות
2 (8.1) 2 (8.1) אודיו 2.0
3 (9) 2 (8.1) אודיו 2.0 או 4.0
3 (9) 3 (9) אודיו 4.0

שדרוג גרסת היעד של FCM

במהלך שדרוג התמונה של הספק, הספקים יכולים גם להגדיל את יעד ה-FCM. כדי לציין את גרסת ה-FCM המטורגטת, שתמונת הספק המשודרגת יכולה לפעול עם. כדי להגדיל את גרסת היעד של FCM, הספקים צריכים:

  1. יש להטמיע את כל גרסאות HAL החדשות הנדרשות לגרסת היעד של FCM.
  2. שינוי גרסאות HAL בקובץ המניפסט של המכשיר.
  3. יש לשנות את גרסת היעד של FCM בקובץ המניפסט של המכשיר.
  4. הסרה של גרסאות HAL שהוצאו משימוש.

לדוגמה, מכשירי Google Pixel ו-Pixel XL הושקו עם Android 7.0 ולכן גרסת היעד של FCM צריכה להיות לכל הפחות מדור קודם. עם זאת, המכשיר המניפסט כולל הצהרה על גרסה 2 של שירות FCM, כי תמונת הספק כוללת עודכן כדי שיתאים לcompatibility_matrix.2.xml:

<manifest version="1.0" type="device" target-level="2">

אם ספקים לא מטמיעים את כל גרסאות HAL החדשות הנדרשות, או לא מסירים אותם גרסאות HAL שהוצאו משימוש, לא ניתן לשדרג את גרסת היעד של FCM.

לדוגמה, למכשירי Google Pixel 2 ו-Pixel 2 XL מוגדר טירגוט של FCM בגרסה 2. אומנם הם מיישמים כמה הנחיות HAL שנדרשות compatibility_matrix.3.xml (למשל אודיו 4.0, Health 2.0 וכו'), הם לא מסירים את android.hardware.radio.deprecated@1.0, הוצאה משימוש בגרסה 3 של FCM (Android 9). לכן, מכשירים לא יכולים לשדרג את גרסת היעד של FCM ל-3.

דרישות ליבה מנחות במהלך OTA

מתבצע עדכון מכשירים מ-Android מגרסה 9 ומטה

במכשירים עם Android מגרסה 9 ומטה, צריך לוודא שערכי ה-CL הבאים דובדבן:

השינויים האלה מציגים את הדגל של ה-build PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS ויציאה סימון לא מוגדר עבור מכשירים שהופעלו באמצעות Android 9 או נמוכה יותר.

  • כשמעדכנים ל-Android 10, לקוחות OTA במכשירים עם Android 9 או גרסאות נמוכות יותר, לא בודקים בצורה נכונה את דרישות הליבה בחבילת ה-OTA. השינויים האלה נדרשים כדי להוריד את דרישות הליבה (kernel) מ-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, ז'אנר של חבילת OTA קורא את גרסת הליבה ואת התצורה כדי לבדוק את התאימות.

אם הסקריפט לא מצליח לחלץ אותו את המידע הזה לגבי קובץ האימג' של הליבה, מבצעים אחת הבאים:

  • צריך לערוך את הסקריפט כך שיתמוך בפורמט הליבה (kernel) ולתרום ל-AOSP.
  • הגדרת BOARD_KERNEL_VERSION לגרסת הליבה (kernel) ו-BOARD_KERNEL_CONFIG_FILE לנתיב של הליבה הבנויה את קובץ התצורה .config. צריך לעדכן את שני המשתנים כשתמונת הליבה מתעדכנת.
  • לחלופין, מגדירים PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS עד false כדי לדלג על בדיקת דרישות הליבה. הפעולה הזו לא מומלצת כי אי-תאימות מוסתרת, והיא מתגלת רק במהלך הרצת בדיקות VTS לאחר העדכון.

אפשר להציג את קוד המקור של הסקריפט לחילוץ המידע בליבה (kernel) extract_kernel.py