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