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