רמת ה-API של הספק

רמת ה-API של הספק מתייחסת לגרסת הממשק שנתמכת על ידי מחיצת ספקים. הממשק הוא דו-כיווני; הוא מתאר את ה-API שמחיצת הספק מספקת למחיצת המערכת (החומרה בשכבת ההפשטה או בממשק HAL), וגם את ה-API שמחיצת הספק ממחיצת המערכת (ערכת המפתחים ברמה נמוכה של נייטיב, ממשק LLNDK).

רמת ה-API של הספק משמשת גם כדי לקבוע את דרישות התוכנה של הספק (VSR), אוסף של דרישות פונקציונליות ולא פונקציונליות שהתוכנה במחיצת הספק חייבת לעמוד בדרישות.

המשך הדף הזה מסביר איך מערכת בהתאם לגרסת Android שלכם, המערכת תשתמש בנכסים כדי לקבוע את הספק רמת ה-API.

הקפאת הספק

Android מאפשר לספק להקפיא את מחיצת הספק בגרסה ספציפית של ה-VSR. הקבוצה של התכונות שמערכת Android מצפה לקבל ממחיצת הספק, נקבעת לפי רמת ה-API של הספק שמשויכת למחיצת הספק. בזמן הריצה, ההתנהגות שהתוכנה שפועלת במחיצת המערכת מתאימה את עצמה רמת ה-API של הספק במחיצת הספק. לדוגמה, התוכנה ייתכן שמחיצת המערכת לא תפעיל תכונות חדשות אם הן לא נתמכות על ידי רמת ה-API של מחיצת הספק.

האפשרות להקפאת ספקים זמינה רק אם אתם יוצרים מכשיר תואם Android.

קביעת רמת ה-API של הספק (Android 14-QPR3 ואילך)

ב-Android מגרסה 14-QPR3 ואילך, רמת ה-API של הספק היא מופצות בנפרד, כלומר רמת ה-API של ה-SDK והספק רמת ה-API לא מסונכרנות.

בגלל לוחות הזמנים הנפרדים להשקה, ל-Android 14-QPR3 ואילך, רמת ה-API של הספק שונה מרמת ה-API של ה-SDK. כדי להבטיח שההפרדה הזו תהיה ברורה, הפורמט של רמת ה-API של הספק הוא תאריך בפורמט YYYYMM (שנה וחודש) ורמת ה-SDK היא מספר שלם.

Android 14-QPR3 ואילך מכיל את המערכת הבאה מאפיינים שקשורים לרמת ה-API של הספק (ro.vendor.api_level):

מאפיין מערכת פורמט תיאור הגדרה ראשונית
ro.board.api_level YYYYMM רמת ה-API של הספק שבה תומכת התוכנה של ערכת שבבים. המאפיין הזה מוגדר לכל ערכות הצ'יפים. מערכת ה-build מגדירה אותו באופן אוטומטי.
ro.board.first_api_level YYYYMM רמת ה-API של הספק שאיתה הופצה התוכנה של ערכת שבבים. המאפיין הזה הוא פונקציה של ערכת שבבים בלבד, והוא מוגדר על ידי ספקי SoC אם ערכת השבבים של SoC עומדת בדרישות להקפאת הספקים. אחרי ההגדרה הראשונית, אין לשנות אותה. ספקי SoC מגדירים את ההגדרה הזו באמצעות BOARD_SHIPPING_API_LEVEL.
ro.product.first_api_level מספר שלם רמת ה-API של ה-SDK שאיתה המכשיר הופעל לראשונה. המאפיין הזה מוגדר על ידי ה-OEM ולאחר מכן אף פעם לא מתעדכן, גם לאחר שדרוגים של מערכת ההפעלה.
ro.vendor.api_level YYYYMM רמת ה-API של הספק שאליה המכשיר כולו צריך להתאים. התיאור מתואר אחרי הטבלה הזו.
ro.board.api_frozen בוליאני המאפיין הזה מוגדר לערך true אם רמת ה-API של הספק ש-ro.board.api_level מייצגת היא סופית. אם המאפיין הזה לא מוגדר, ברירת המחדל שלו תהיה false.
ro.llndk.api_level YYYYMM רמת ה-API של הספק בפורמט YYYYMM שמספקים ה-LLNDK הנוכחי במחיצת המערכת. ה-LLNDK תואם לאחור, כך שכל תמונת ספק קטנה מרמת ה-API הזו או שווה לה יכולה להבהב עם תמונת המערכת הזו. המאפיין הזה מוגדר על ידי מחיצת המערכת.

המאפיין ro.vendor.api_level נגזר באחת משתי הדרכים הבאות:

  • אם ערכת השבבים עומדת בדרישות להקפאת הספק:

    ro.vendor.api_level = min(
      ro.board.api_level,
      AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level))
    
  • אם ערכת השבבים לא נמצאת בהקפאה של הספק:

    ro.vendor.api_level =
      AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level)
    

השיטה AVendorSupport_getVendorApiLevelOf() קובעת רמת ה-API של הספק מרמת API של SDK. לדוגמה AVendorSupport_getVendorApiLevelOf(35), כאשר 35 היא רמת ה-API של ה-SDK של הגרסה הראשית של Android ב-2024 מחזירה את 202404, שזה התאריך המשוער של Android 14-QPR3 כשרמת ה-API הנוכחית של הספק הייתה הוגדרה.

קביעת רמת ה-API של הספק (Android 13)

רמת ה-API של הספק תואמת לרמת ה-API של ה-SDK, שהיא רמת ה-API של האפליקציה-OS בממשק, ומתעדכן פעם בשנה, כאשר פלטפורמת Android החדשה מופצת ל-AOSP.

מערכת Android 13 כוללת את המערכת הבאה מאפיינים שקשורים לרמת ה-API של הספק (ro.vendor.api_level):

מאפיין מערכת פורמט תיאור הגדרה ראשונית
ro.board.first_api_level מספר שלם רמת ה-API של הספק שאיתה הופצה התוכנה של ערכת שבבים. זוהי פונקציה של ערכת שבבים בלבד, ולא ניתן לשנות אותה על ידי ספקי SoC או יצרני ציוד מקורי. הנכס הזה מוגדר רק לערכות שבבים שעומדות בדרישות להקפאת הספק הערך נקבע על ידי הגדרה של BOARD_SHIPPING_API_LEVEL בקובץ device.mk.
ro.board.api_level מספר שלם רמת ה-API של הספק שבה תומכת התוכנה של ערכת שבבים. הנכס הזה מוגדר רק לערכות שבבים שעומדות בדרישות להקפאת הספק. המאפיין הזה מוגדר לכל ערכות הצ'יפים. בהתחלה, מערכת ה-build קובעת את הערך של הנכס הזה לאותו ערך כמו ro.board.first_api_level, אבל אפשר לעדכן אותו אם המחיצה של הספק משודרגת.
ro.product.first_api_level מספר שלם רמת ה-API של ה-SDK שאיתה המכשיר הופעל לראשונה. המאפיין הזה מוגדר על ידי ה-OEM ואף פעם לא מתעדכן, גם לאחר שדרוגים של מערכת ההפעלה.
ro.vendor.api_level מספר שלם רמת ה-API של הספק שאליה המכשיר כולו צריך להתאים. התיאור מתואר אחרי הטבלה הזו.
ro.vndk.version מספר שלם גרסת ה-VNDK שעליה נבנת המחיצה של הספק. המאפיין הזה מוגדר על ידי מחיצת המערכת.
ro.vendor.build.version.sdk מספר שלם רמת ה-API של ה-SDK של עץ המקור שבו נבנתה מחיצת הספק.
ro.vendor.build.version.release מספר שלם גרסת הפלטפורמה של עץ המקור שבו נבנתה מחיצת הספק.
ro.vendor.build.version.release_or_codename מספר שלם שם הקוד של עץ המקור שבו נבנתה מחיצת הספקים.

המאפיין ro.vendor.api_level מוגדר באופן אוטומטי למינימום של ro.board.api_level (או ro.board.first_api_level אם ro.board.api_level לא מוגדר) וגם ro.product.first_api_level