רמת ה-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.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.product.first_api_level. אנחנו מגדירים את ro.vendor.api_level לערך של ro.board.api_level אם ro.board.api_level נמוך מרמת ה-API של הספק ro.product.first_api_level רק אם ערכת השבבים SoC עומדת בדרישות להקפאת הספק. התיאור מופיע אחרי הטבלה הזו.
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, שמתייחסת לממשק בין האפליקציה למערכת ההפעלה. היא מתעדכנת פעם בשנה כשהפלטפורמה החדשה של Android מופצת ל-AOSP.

‫Android 13 מכילה את מאפייני המערכת הבאים שקשורים לרמת ה-API של הספק:

מאפיין מערכת פורמט תיאור הגדרה ראשונית
ro.board.first_api_level מספר שלם רמת ה-API של הספק שבה הושקה לראשונה תוכנה של ערכת שבבים. זו פונקציה של ערכת השבבים בלבד, וספקי SoC או יצרני ציוד מקורי (OEM) לא יכולים לשנות אותה. המאפיין הזה מוגדר רק עבור ערכות שבבים שעומדות בדרישות להקפאת הספק הערך נקבע על ידי הגדרת 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 שביחס אליה מבוצע ה-build של מחיצת הספק. הנכס הזה מוגדר במחיצה של הספק.
ro.vendor.build.version.sdk מספר שלם רמת ה-API של ערכת ה-SDK בעץ המקור שבו נבנה מחיצת הספק.