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

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

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

כאשר מגדירים את גרסת היעד FCM של המכשיר עבור מכשירים חדשים:

  1. השאר DEVICE_MANIFEST_FILE ואת PRODUCT_ENFORCE_VINTF_MANIFEST ללא הגדרה.
  2. יישום HALs עבור גרסת Target FCM.
  3. כתוב את קובץ המניפסט הנכון של המכשיר.
  4. כתוב את גרסת היעד של FCM לקובץ המניפסט של המכשיר.
  5. הגדר DEVICE_MANIFEST_FILE .
  6. הגדר את PRODUCT_ENFORCE_VINTF_MANIFEST ל- true .

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

כאשר מכשיר חדש יוצא לשוק, יש לקבוע את גרסת היעד הראשונית שלו ולהכריז במניפסט ההתקן כתכונה " target-level " באלמנט <manifest> ברמה העליונה.

לדוגמה, מכשירים המופעלים עם אנדרואיד 9 חייבים להיות ב-Target FCM Version שווה ל-3 (הגרסה הגבוהה יותר הזמינה בשלב זה). כדי להצהיר על כך במניפסט המכשיר:

<manifest version="1.0" type="device" target-level="3">
    <!-- ... -->
</manifest>

שדרוג תמונת ספק

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

שדרוג HALs

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

  • מכשירי Google Pixel 2 ו-Pixel 2 XL שפורסמו עם Target FCM גרסה 2, שהטמיעה את האודיו 2.0 HAL הנדרש android.hardware.audio@2.0::IDeviceFactory/default .
  • עבור אודיו 4.0 HAL ששוחררו עם אנדרואיד 9, מכשירי Google Pixel 2 ו-Pixel 2 XL יכולים להשתמש ב-OTA מלא כדי לשדרג ל-4.0 HAL, המיישמת android.hardware.audio@4.0::IDeviceFactory/default .
  • למרות ש- compatibility_matrix.2.xml מציינת אודיו 2.0 בלבד, הדרישה לתמונת ספק עם Target FCM גרסה 2 שוחררה מכיוון שמסגרת Android 9 (FCM Version 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

שדרוג גרסת Target FCM

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

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

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

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

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

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

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

עדכון מכשירים מאנדרואיד 9 ומטה

במכשירים עם אנדרואיד 9 ומטה, ודא שה-CL הבא נבחר בדובדבן:

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

  • בעת עדכון ל-Android 10, לקוחות OTA במכשירים עם אנדרואיד 9 ומטה אינם בודקים את דרישות הליבה בחבילת OTA בצורה נכונה. שינויים אלה נחוצים כדי להוריד את דרישות הליבה מחבילת ה-OTA שנוצרה.
  • בעת עדכון לאנדרואיד 11, זה אופציונלי להגדיר את דגל הבנייה PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS כדי לבדוק תאימות VINTF כאשר חבילת העדכון נוצרת.

למידע נוסף על דגל בנייה זה, ראה עדכון מכשירים מאנדרואיד 10 .

עדכון מכשירים מאנדרואיד 10

אנדרואיד 10 מציגה דגל בנייה חדש, PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS . עבור מכשירים שהושקו עם אנדרואיד 10, הדגל הזה מוגדר אוטומטית ל- true . כאשר הדגל מוגדר כ- true , סקריפט מחלץ את גרסת הליבה ואת תצורות הליבה מתמונת הליבה המותקנת.

  • בעת עדכון לאנדרואיד 10, חבילת עדכון OTA מכילה גרסת ליבה ותצורה. לקוחות OTA במכשירים עם אנדרואיד 10 קוראים מידע זה כדי לבדוק תאימות.
  • בעת עדכון לאנדרואיד 11, יצירת חבילת OTA קוראת את גרסת הליבה והתצורה כדי לבדוק תאימות.

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

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

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