از 27 مارس 2025، توصیه می کنیم از android-latest-release به جای aosp-main برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
این صفحه طرح دایرکتوری دستگاههای دارای 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 مخصوص فروشنده اضافه کنید.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# Directories, rules, and sepolicy\n\nThis page describes the directory layout for devices running Android 8.0 and\nhigher, VNDK rules, and associated sepolicy.\n\nDirectory layout\n----------------\n\nThe *Degenerated Directory Layout* consists of the following\ndirectories:\n\n- `/system/lib[64]` contains all framework shared libraries, including LL-NDK, VNDK, and framework-only libraries (including LL-NDK-Private and some libraries with the same names as the ones in VNDK-SP).\n- `/system/lib[64]/vndk-sp` contains VNDK-SP libraries for same-process HALs.\n- `/vendor/lib[64]` contains the VNDK libraries extended by the vendor (either DXUA or DXUX VNDK libraries), same-process HAL implementations, and other vendor shared libraries.\n- `/vendor/lib[64]/vndk-sp` may contain the VNDK-SP libraries extended by the vendor.\n\nVendor modules load the VNDK libraries from `/system/lib[64]`.\n\nVNDK rules\n----------\n\nThis section provides a comprehensive list of VNDK rules:\n\n- Framework processes must not load non-SP-HAL shared libraries from vendor partitions (strictly enforced starting from Android 8.1).\n- Vendor processes must not load non-LL-NDK, non-VNDK-SP, and non-VNDK libraries from the system partition. (not strictly enforced in Android O but will be in a future release).\n| **Note**: To benefit from the framework-only OTA beyond Android 8.0, this rule must not be violated in devices launched with Android 8.0.\n- Installed VNDK libraries must be a subset of Google-defined eligible VNDK libraries.\n- The outer dependencies of SP-HAL and SP-HAL-Dep must be restricted to LL-NDK or Google-defined VNDK-SP libraries.\n - The dependencies of an SP-HAL shared library must be restricted to LL-NDK libraries, Google-defined VNDK-SP libraries, other SP-HAL libraries, and/or other vendor shared libraries that can be labeled as SP-HAL-Dep libraries.\n - A vendor shared library can be labeled as a SP-HAL-Dep library only if it is not an AOSP library and its dependencies are restricted to LL-NDK libraries, Google-defined VNDK-SP libraries, SP-HAL libraries, and/or other SP-HAL-Dep libraries.\n- VNDK-SP must be self-contained. `libRS_internal.so` gets special treatment in Android 8.0, but will be revisited in a future release.\n- No framework-vendor communication through non-HIDL interfaces, including (but not limited to) binder, sockets, shared memories, files, etc.\n- The size of the system partition must be large enough to contain two copies of all eligible VNDK libraries and a copy of ineligible framework shared libraries.\n\nsepolicy\n--------\n\nFramework processes described in this section correspond to\n`coredomain` in sepolicies while vendor processes correspond to\n`non-coredomain`. For example, `/dev/binder` can be\naccessed only in `coredomain` and `/dev/vndbinder` can be\naccessed only in non-`coredomain`.\n\nSimilar policies restrict the access to the shared libraries on system and\nvendor partitions. The following table shows the rights to access shared\nlibraries of different categories:\n\n| Category | Partition | Accessible from coredomain | Accessible from non-coredomain |\n|-------------------------|-----------|----------------------------|--------------------------------|\n| LL-NDK | System | Y | Y |\n| LL-NDK-Private | System | Y | Y |\n| VNDK-SP/VNDK-SP-Private | System | Y | Y |\n| VNDK-SP-Ext | Vendor | Y | Y |\n| VNDK | System | Y | Y |\n| VNDK-Ext | Vendor | N | Y |\n| FWK-ONLY | System | Y | N |\n| FWK-ONLY-RS | System | Y | N |\n| SP-HAL | Vendor | Y | Y |\n| SP-HAL-Dep | Vendor | Y | Y |\n| VND-ONLY | Vendor | N | Y |\n\nLL-NDK-Private and VNDK-SP-Private must be\naccessible from both domains because non-`coredomain` will\nindirectly access them. Similarly, SP-HAL-Dep must be accessible from\n`coredomain` because SP-HAL relies on it.\n\nsame_process_hal_file label\n---------------------------\n\nThe following libraries exist in the vendor partition. Make these libraries accessible from both\n`coredomain` and non-`coredomain`.\n\n- VNDK-SP-Ext in `/vendor/lib[64]/vndk-sp`\n- SP-HAL in `/vendor/lib[64]` or `/vendor/lib[64]/hw`\n- SP-HAL-Dep in `/vendor/lib[64]` or `/vendor/lib[64]/hw`\n\nExplicitly label these files as `same_process_hal_file`, because anything\nin `vendor` partition is by default not accessible to `coredomain`. Add lines similar to\nthe following to the vendor-specific `file_contexts` file. \n\n```scdoc\n/vendor/lib(64)?/hw/libMySpHal\\.so u:object_r:same_process_hal_file:s0\n/vendor/lib(64)?/vndk-sp/libBase\\.so u:object_r:same_process_hal_file:s0\n/vendor/lib(64)?/libBaseInternal\\.so u:object_r:same_process_hal_file:s0\n```"]]