اعتبارًا من 27 آذار (مارس) 2025، ننصحك باستخدام android-latest-release بدلاً من aosp-main لإنشاء AOSP والمساهمة فيه. لمزيد من المعلومات، يُرجى الاطّلاع على التغييرات في AOSP.
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
توضِّح هذه الصفحة تنسيق الدليل للأجهزة التي تعمل بالإصدار 8.0 من Android
والإصدارات الأحدث، وقواعد VNDK، وسياسات الأمان المرتبطة بها.
تنسيق الدليل
يتألف تنسيق الدليل المتدهّر من الدلائل التالية:
يحتوي /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 ومكتبات غير 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، بما في ذلك
(على سبيل المثال لا الحصر) الربط والمنافذ والذاكرة المشتركة والملفات وما إلى ذلك
يجب أن يكون حجم قسم النظام كبيرًا بما يكفي لتضمين نسختَين
من جميع مكتبات VNDK المؤهَّلة ونسخة من مكتبات
المشترَكة غير المؤهَّلة للإطار الأساسي.
sepolicy
تتوافق عمليات إطار العمل الموضّحة في هذا القسم مع
coredomain في sepolicies، في حين تتوافق عمليات المورّدين مع
non-coredomain. على سبيل المثال، لا يمكن الوصول إلى /dev/binder إلا في coredomain، ولا يمكن الوصول إلى /dev/vndbinder إلا في غير coredomain.
تفرض السياسات المشابهة قيودًا على الوصول إلى المكتبات المشتركة في أقسام النظام
والمورّد. يعرض الجدول التالي حقوق الوصول إلى مكتبات مشترَكة من فئات مختلفة:
الفئة
قسم
يمكن الوصول إليها من coredomain
يمكن الوصول إليها من non-coredomain
LL-NDK
النظام
Y
Y
LL-NDK-Private
النظام
Y
Y
VNDK-SP/VNDK-SP-Private
النظام
Y
Y
VNDK-SP-Ext
المورّد
Y
Y
الدونغ الفيتنامي (VNDK)
النظام
Y
Y
VNDK-Ext
المورّد
N
Y
FWK-ONLY
النظام
Y
N
FWK-ONLY-RS
النظام
Y
N
SP-HAL
المورّد
Y
Y
SP-HAL-Dep
المورّد
Y
Y
دونغ فيتنامي فقط
المورّد
N
Y
يجب أن يكون بالإمكان
الوصول إلى LL-NDK-Private وVNDK-SP-Private من كلا النطاقَين لأنّ التطبيقات غير المتوافقة مع coredomain ستصل إليها
بشكل غير مباشر. وبالمثل، يجب أن يكون بإمكانك الوصول إلى SP-HAL-Dep من
coredomain لأنّ SP-HAL يعتمد عليه.
تصنيف same_process_hal_file
تتوفّر المكتبات التالية في قسم المورّد. اجعل هذه المكتبات متاحة من كلا يلي:
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، لأنّه لا يمكن لـ coredomain الوصول تلقائيًا إلى أي ملف
في قسم vendor. أضِف أسطرًا مشابهة لتلك الواردة في المثال التالي إلى ملف file_contexts الخاص بالمورّد.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","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-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],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```"]]