این صفحه طرح دایرکتوری دستگاههای دارای Android نسخه 8.0 و بالاتر، قوانین VNDK و سیاستهای مرتبط را توضیح میدهد.
طرح دایرکتوری
چیدمان دایرکتوری Degenerated از دایرکتوری های زیر تشکیل شده است:
-
/system/lib[64]
شامل تمام کتابخانههای مشترک چارچوب، از جمله LL-NDK، VNDK، و کتابخانههای فقط چارچوب (شامل LL-NDK-Private و برخی از کتابخانههایی با نامهای مشابه در VNDK-SP) است. -
/system/lib[64]/vndk-sp
حاوی کتابخانههای VNDK-SP برای HALهای یک فرآیند است. -
/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، non-VNDK-SP و غیر VNDK را از پارتیشن سیستم بارگیری کنند. (در Android 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 واجد شرایط و یک نسخه از کتابخانههای مشترک چارچوب نامناسب باشد.
سیاست گذاری
فرآیندهای چارچوبی که در این بخش توضیح داده شده است با coredomain
در سیاستگذاریها مطابقت دارند در حالی که فرآیندهای فروشنده با non-coredomain
مطابقت دارند. به عنوان مثال، /dev/binder
فقط در coredomain
قابل دسترسی است و /dev/vndbinder
فقط در non- coredomain
قابل دسترسی است.
سیاست های مشابه دسترسی به کتابخانه های مشترک در پارتیشن های سیستم و فروشنده را محدود می کند. جدول زیر حقوق دسترسی به کتابخانه های مشترک دسته های مختلف را نشان می دهد:
دسته بندی | پارتیشن | قابل دسترسی از Coredomain | قابل دسترسی از غیر هسته دامنه |
---|---|---|---|
LL-NDK | سیستم | Y | Y |
LL-NDK-خصوصی | سیستم | Y | Y |
VNDK-SP/VNDK-SP-Private | سیستم | Y | Y |
VNDK-SP-Ext | فروشنده | Y | Y |
VNDK | سیستم | Y | Y |
VNDK-Ext | فروشنده | ن | Y |
FWK-ONLY | سیستم | Y | ن |
FWK-ONLY-RS | سیستم | Y | ن |
SP-HAL | فروشنده | Y | Y |
SP-HAL-Dep | فروشنده | Y | Y |
VND-ONLY | فروشنده | ن | Y |
LL-NDK-Private و VNDK-SP-Private باید از هر دو دامنه قابل دسترسی باشند زیرا غیر coredomain
به طور غیر مستقیم به آنها دسترسی خواهد داشت. به طور مشابه، SP-HAL-Dep باید از coredomain
قابل دسترسی باشد زیرا SP-HAL به آن متکی است.
برچسب same_process_hal_file
کتابخانه های زیر در پارتیشن فروشنده وجود دارد. این کتابخانه ها را هم از coredomain
و هم از Non 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