توضِّح هذه الصفحة تنسيق الدليل للأجهزة التي تعمل بالإصدار 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
الخاص بالمورّد.
/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