دایرکتوری‌ها، قوانین، و sepolicy

این صفحه طرح‌بندی دایرکتوری برای دستگاه‌های دارای 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