الدلائل والقواعد والنهج

تصف هذه الصفحة تخطيط الدليل للأجهزة التي تعمل بنظام التشغيل Android 8.0 والإصدارات الأحدث، وقواعد VNDK، وسياسة الخصوصية المرتبطة بها.

تخطيط الدليل

يتكون تخطيط الدليل المنحل من الدلائل التالية:

  • يحتوي /system/lib[64] على جميع مكتبات إطار العمل المشتركة، بما في ذلك مكتبات LL-NDK وVNDK ومكتبات إطار العمل فقط (بما في ذلك LL-NDK-Private وبعض المكتبات التي لها نفس الأسماء الموجودة في VNDK-SP).
  • يحتوي /system/lib[64]/vndk-sp على مكتبات VNDK-SP لـ HALs ذات العملية نفسها.
  • يحتوي /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 في السياسات بينما تتوافق عمليات البائع مع non-coredomain . على سبيل المثال، يمكن الوصول إلى /dev/binder فقط في coredomain ويمكن الوصول إلى /dev/vndbinder فقط في coredomain .

سياسات مماثلة تقيد الوصول إلى المكتبات المشتركة على أقسام النظام والبائعين. يوضح الجدول التالي حقوق الوصول إلى المكتبات المشتركة ذات الفئات المختلفة:

فئة تقسيم يمكن الوصول إليها من
com.coredomain
يمكن الوصول إليها من
غير المجال الأساسي
إل إل إن دي كيه نظام ي ي
LL-NDK-خاص نظام ي ي
VNDK-SP/VNDK-SP-خاص نظام ي ي
VNDK-SP-تحويلة بائع ي ي
فندك نظام ي ي
VNDK- تحويلة بائع ن ي
FWK فقط نظام ي ن
FWK-فقط-RS نظام ي ن
SP-هال بائع ي ي
SP-HAL-ديب بائع ي ي
VND-فقط بائع ن ي

يجب أن يكون من الممكن الوصول إلى LL-NDK-Private وVNDK-SP-Private من كلا النطاقين لأن المجال غير coredomain سيصل إليهما بشكل غير مباشر. وبالمثل، يجب أن يكون SP-HAL-Dep قابلاً للوصول من coredomain لأن SP-HAL يعتمد عليه.

تسمية same_process_hal_file

المكتبات التالية موجودة في قسم البائع. اجعل هذه المكتبات قابلة للوصول من coredomain وغير coredomain .

  • VNDK-SP-Ext in /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
,

تصف هذه الصفحة تخطيط الدليل للأجهزة التي تعمل بنظام التشغيل Android 8.0 والإصدارات الأحدث، وقواعد VNDK، وسياسة الخصوصية المرتبطة بها.

تخطيط الدليل

يتكون تخطيط الدليل المنحل من الدلائل التالية:

  • يحتوي /system/lib[64] على جميع مكتبات إطار العمل المشتركة، بما في ذلك مكتبات LL-NDK وVNDK ومكتبات إطار العمل فقط (بما في ذلك LL-NDK-Private وبعض المكتبات التي لها نفس الأسماء الموجودة في VNDK-SP).
  • يحتوي /system/lib[64]/vndk-sp على مكتبات VNDK-SP لـ HALs ذات العملية نفسها.
  • يحتوي /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 في السياسات بينما تتوافق عمليات البائع مع non-coredomain . على سبيل المثال، يمكن الوصول إلى /dev/binder فقط في coredomain ويمكن الوصول إلى /dev/vndbinder فقط في coredomain .

سياسات مماثلة تقيد الوصول إلى المكتبات المشتركة على أقسام النظام والبائعين. يوضح الجدول التالي حقوق الوصول إلى المكتبات المشتركة ذات الفئات المختلفة:

فئة تقسيم يمكن الوصول إليها من
com.coredomain
يمكن الوصول إليها من
غير المجال الأساسي
إل إل إن دي كيه نظام ي ي
LL-NDK-خاص نظام ي ي
VNDK-SP/VNDK-SP-خاص نظام ي ي
VNDK-SP-تحويلة بائع ي ي
فندك نظام ي ي
VNDK- تحويلة بائع ن ي
FWK فقط نظام ي ن
FWK-فقط-RS نظام ي ن
SP-هال بائع ي ي
SP-HAL-ديب بائع ي ي
VND-فقط بائع ن ي

يجب أن يكون من الممكن الوصول إلى LL-NDK-Private وVNDK-SP-Private من كلا النطاقين لأن المجال غير coredomain سيصل إليهما بشكل غير مباشر. وبالمثل، يجب أن يكون SP-HAL-Dep قابلاً للوصول من coredomain لأن SP-HAL يعتمد عليه.

تسمية same_process_hal_file

المكتبات التالية موجودة في قسم البائع. اجعل هذه المكتبات قابلة للوصول من coredomain وغير coredomain .

  • VNDK-SP-Ext in /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