ספריות, כללים ומדיניות

דף זה מתאר את פריסת הספרייה למכשירים המריצים אנדרואיד 8.0 ואילך, כללי VNDK והמדיניות המשויכת.

פריסת ספריות

פריסת המדריך המנוונת מורכבת מהספריות הבאות:

  • /system/lib[64] מכיל את כל הספריות המשותפות למסגרת, כולל ספריות LL-NDK, VNDK וספריות מסגרת בלבד (כולל LL-NDK-Private וכמה ספריות עם אותם שמות כמו אלה ב-VNDK-SP).
  • /system/lib[64]/vndk-sp מכיל ספריות VNDK-SP עבור HALs באותו תהליך.
  • /vendor/lib[64] מכיל את ספריות VNDK המורחבות על ידי הספק (ספריות DXUA או DXUX VNDK), יישומי HAL באותו תהליך וספריות משותפות אחרות של ספקים.
  • /vendor/lib[64]/vndk-sp עשוי להכיל את ספריות VNDK-SP המורחבות על ידי הספק.

מודולי ספק טוענים את ספריות VNDK מ- /system/lib[64] .

חוקי VNDK

סעיף זה מספק רשימה מקיפה של חוקי VNDK:

  • תהליכי מסגרת אינם חייבים לטעון ספריות משותפות שאינן SP-HAL ממחיצות הספק (נאכפים בקפדנות החל מ-Android 8.1).
  • לתהליכי ספק אסור לטעון ספריות שאינן LL-NDK, שאינן VNDK-SP ולא VNDK ממחיצת המערכת. (לא נאכף בקפדנות באנדרואיד O אבל יהיה במהדורה עתידית).
  • ספריות VNDK המותקנות חייבות להיות קבוצת משנה של ספריות VNDK כשירות המוגדרות על ידי Google.
  • התלות החיצונית של SP-HAL ו-SP-HAL-Dep חייבת להיות מוגבלת לספריות LL-NDK או VNDK-SP המוגדרות על ידי Google.
    • התלות של ספרייה משותפת SP-HAL חייבת להיות מוגבלת לספריות LL-NDK, ספריות VNDK-SP המוגדרות על ידי Google, ספריות SP-HAL אחרות ו/או ספריות משותפות אחרות של ספקים שניתן לתייג כספריות SP-HAL-Dep .
    • ספרייה משותפת של ספק יכולה להיות מתויגת כספריית SP-HAL-Dep רק אם היא אינה ספריית AOSP והתלות שלה מוגבלת לספריות LL-NDK, ספריות VNDK-SP המוגדרות על ידי Google, ספריות SP-HAL ו/או ספריות SP-HAL-Dep אחרות.
  • VNDK-SP חייב להיות עצמאי. libRS_internal.so זוכה לטיפול מיוחד באנדרואיד 8.0, אך ייבדק מחדש במהדורה עתידית.
  • אין תקשורת בין ספקי מסגרת דרך ממשקים שאינם HIDL, כולל (אך לא מוגבל) קלסר, שקעים, זיכרונות משותפים, קבצים וכו'.
  • גודל מחיצת המערכת חייב להיות גדול מספיק כדי להכיל שני עותקים של כל ספריות ה-VNDK הכשירות ועותק של ספריות משותפות של מסגרת שאינן מתאימות.

sepolicy

תהליכי מסגרת המתוארים בסעיף זה תואמים ל- coredomain ב-sepolicies בעוד שתהליכי הספק תואמים non-coredomain . לדוגמה, ניתן לגשת /dev/binder רק ב- coredomain וניתן לגשת /dev/vndbinder רק ב- coredomain .

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

קטגוריה חֲלוּקָה נגיש מ
coredomain
נגיש מ
לא תחום ליבה
LL-NDK מערכת י י
LL-NDK-פרטי מערכת י י
VNDK-SP/VNDK-SP-פרטי מערכת י י
VNDK-SP-Ext מוֹכֵר י י
VNDK מערכת י י
VNDK-Ext מוֹכֵר נ י
FWK בלבד מערכת י נ
FWK-ONLY-RS מערכת י נ
SP-HAL מוֹכֵר י י
SP-HAL-Dep מוֹכֵר י י
VND בלבד מוֹכֵר נ י

LL-NDK-Private ו-VNDK-SP-Private חייבות להיות נגישות משני הדומיינים, מכיוון שדומיין שאינו coredomain ייגש אליהם באופן עקיף. באופן דומה, SP-HAL-Dep חייב להיות נגיש מ- coredomain מכיוון ש-SP-HAL מסתמך עליו.

תווית same_process_hal_file

הספריות הבאות קיימות במחיצת הספק. הפוך את הספריות הללו לנגישות מ- coredomain וגם מ- coredomain .

  • VNDK-SP-Ext ב- /vendor/lib[64]/vndk-sp
  • SP-HAL ב- /vendor/lib[64] או /vendor/lib[64]/hw
  • SP-HAL-Dep ב- /vendor/lib[64] או /vendor/lib[64]/hw

תייג במפורש קבצים אלה כ- same_process_hal_file , מכיוון שכל דבר במחיצת vendor אינו נגיש כברירת מחדל ל- coredomain . הוסף שורות דומות להלן לקובץ file_contexts הספציפי לספק.

/vendor/lib(64)?/hw/libMySpHal\.so        u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/vndk-sp/libBase\.so      u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/libBaseInternal\.so      u:object_r:same_process_hal_file:s0