ספריות, כללים וסגולות

דף זה מתאר את פריסת הספריה למכשירים עם מערכת הפעלה אנדרואיד 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 ממחיצת המערכת. (לא נאכף בקפידה ב- Android O אך יהיה במהדורה עתידית).
  • ספריות VNDK מותקנות חייבות להיות קבוצת משנה של ספריות VNDK זכאיות המוגדרות על ידי Google.
  • התלות החיצונית של SP-HAL ו- SP-HAL-Dep חייבת להיות מוגבלת לספריות LN-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 מקבל טיפול מיוחד ב- Android 8.0, אך יבקר שוב במהדורה עתידית.
  • אין תקשורת של ספק מסגרות דרך ממשקים שאינם HIDL, כולל (אך לא מוגבל) קלסר, שקעים, זיכרונות משותפים, קבצים וכו '.
  • גודל מחיצת המערכת חייב להיות גדול מספיק כדי להכיל שני עותקים של כל ספריות ה- VNDK הזכאות והעתק של ספריות משותפות שאינן כשירות למסגרת.

סגולה

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

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

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

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

same_process_hal_file

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

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

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