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

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

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

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

הקפאת ספקים

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

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

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

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