דף זה מתאר את פריסת הספרייה למכשירים המריצים אנדרואיד 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