निर्देशिकाएँ, नियम, और शासन नीति

यह पृष्ठ एंड्रॉइड 8.0 और उच्चतर चलाने वाले उपकरणों के लिए निर्देशिका लेआउट, वीएनडीके नियमों और संबंधित सेपॉलिसी का वर्णन करता है।

निर्देशिका लेआउट

डिजेनेरेटेड निर्देशिका लेआउट में निम्नलिखित निर्देशिकाएँ शामिल हैं:

  • /system/lib[64] में सभी फ्रेमवर्क साझा लाइब्रेरीज़ शामिल हैं, जिनमें एलएल-एनडीके, वीएनडीके, और फ्रेमवर्क-ओनली लाइब्रेरीज़ (एलएल-एनडीके-प्राइवेट और वीएनडीके-एसपी के समान नाम वाली कुछ लाइब्रेरीज़ शामिल हैं)।
  • /system/lib[64]/vndk-sp समान-प्रक्रिया HAL के लिए VNDK-SP लाइब्रेरी शामिल हैं।
  • /vendor/lib[64] में विक्रेता द्वारा विस्तारित VNDK लाइब्रेरीज़ (या तो DXUA या DXUX VNDK लाइब्रेरीज़), समान-प्रक्रिया HAL कार्यान्वयन और अन्य विक्रेता साझा लाइब्रेरीज़ शामिल हैं।
  • /vendor/lib[64]/vndk-sp विक्रेता द्वारा विस्तारित VNDK-SP लाइब्रेरीज़ शामिल हो सकती हैं।

विक्रेता मॉड्यूल VNDK लाइब्रेरी को /system/lib[64] से लोड करते हैं।

वीएनडीके नियम

यह अनुभाग VNDK नियमों की एक विस्तृत सूची प्रदान करता है:

  • फ्रेमवर्क प्रक्रियाओं को विक्रेता विभाजन से गैर-एसपी-एचएएल साझा पुस्तकालयों को लोड नहीं करना चाहिए (एंड्रॉइड 8.1 से सख्ती से लागू)।
  • विक्रेता प्रक्रियाओं को सिस्टम विभाजन से गैर-एलएल-एनडीके, गैर-वीएनडीके-एसपी और गैर-वीएनडीके पुस्तकालयों को लोड नहीं करना चाहिए। (एंड्रॉइड O में सख्ती से लागू नहीं किया गया है लेकिन भविष्य में रिलीज़ किया जाएगा)।
  • स्थापित VNDK लाइब्रेरीज़ Google-परिभाषित योग्य VNDK लाइब्रेरीज़ का एक सबसेट होना चाहिए।
  • SP-HAL और SP-HAL-Dep की बाहरी निर्भरताएँ LL-NDK या Google-परिभाषित VNDK-SP लाइब्रेरीज़ तक सीमित होनी चाहिए।
    • एसपी-एचएएल साझा लाइब्रेरी की निर्भरता एलएल-एनडीके लाइब्रेरी, Google-परिभाषित वीएनडीके-एसपी लाइब्रेरी, अन्य एसपी-एचएएल लाइब्रेरी और/या अन्य विक्रेता साझा लाइब्रेरी तक सीमित होनी चाहिए जिन्हें एसपी-एचएएल-डिप लाइब्रेरी के रूप में लेबल किया जा सकता है। .
    • एक विक्रेता साझा लाइब्रेरी को केवल SP-HAL-Dep लाइब्रेरी के रूप में लेबल किया जा सकता है यदि यह AOSP लाइब्रेरी नहीं है और इसकी निर्भरता LL-NDK लाइब्रेरी, Google-परिभाषित VNDK-SP लाइब्रेरी, SP-HAL लाइब्रेरी और/या तक सीमित है। अन्य एसपी-एचएएल-डिप लाइब्रेरी।
  • वीएनडीके-एसपी को आत्मनिर्भर होना चाहिए। libRS_internal.so एंड्रॉइड 8.0 में विशेष उपचार मिलता है, लेकिन भविष्य के रिलीज में इसे फिर से देखा जाएगा।
  • गैर-एचआईडीएल इंटरफेस के माध्यम से कोई फ्रेमवर्क-विक्रेता संचार नहीं, जिसमें बाइंडर, सॉकेट, साझा यादें, फ़ाइलें इत्यादि शामिल हैं (लेकिन इन्हीं तक सीमित नहीं हैं)।
  • सिस्टम विभाजन का आकार इतना बड़ा होना चाहिए कि उसमें सभी योग्य VNDK लाइब्रेरीज़ की दो प्रतियां और अयोग्य फ्रेमवर्क साझा लाइब्रेरीज़ की एक प्रति शामिल हो सके।

sepolicy

इस अनुभाग में वर्णित फ़्रेमवर्क प्रक्रियाएं सेपॉलिसी में coredomain के अनुरूप हैं जबकि विक्रेता प्रक्रियाएं non-coredomain के अनुरूप हैं। उदाहरण के लिए, /dev/binder केवल coredomain में एक्सेस किया जा सकता है और /dev/vndbinder केवल गैर- coredomain में एक्सेस किया जा सकता है।

समान नीतियां सिस्टम और विक्रेता विभाजन पर साझा पुस्तकालयों तक पहुंच को प्रतिबंधित करती हैं। निम्न तालिका विभिन्न श्रेणियों की साझा लाइब्रेरी तक पहुँचने के अधिकार दिखाती है:

वर्ग PARTITION से पहुंच योग्य
coredomain
से पहुंच योग्य
गैर-कोरडोमेन
एलएल-एनडीके प्रणाली वाई वाई
एलएल-एनडीके-प्राइवेट प्रणाली वाई वाई
वीएनडीके-एसपी/वीएनडीके-एसपी-प्राइवेट प्रणाली वाई वाई
वीएनडीके-एसपी-एक्सट विक्रेता वाई वाई
वीएनडीके प्रणाली वाई वाई
वीएनडीके-एक्सट विक्रेता एन वाई
FWK-केवल प्रणाली वाई एन
एफडब्ल्यूके-केवल-आरएस प्रणाली वाई एन
एसपी-एचएएल विक्रेता वाई वाई
एसपी-एचएएल-डिपा विक्रेता वाई वाई
केवल वीएनडी विक्रेता एन वाई

एलएल-एनडीके-प्राइवेट और वीएनडीके-एसपी-प्राइवेट को दोनों डोमेन से एक्सेस किया जाना चाहिए क्योंकि गैर- coredomain अप्रत्यक्ष रूप से उन तक पहुंच प्राप्त करेगा। इसी तरह, SP-HAL-Dep को coredomain से एक्सेस किया जाना चाहिए क्योंकि SP-HAL इस पर निर्भर करता है।

same_process_hal_file लेबल

विक्रेता विभाजन में निम्नलिखित लाइब्रेरी मौजूद हैं। इन पुस्तकालयों को coredomain और गैर- coredomain दोनों से सुलभ बनाएं।

  • VNDK-SP-Ext in /vendor/lib[64]/vndk-sp
  • /vendor/lib[64] या /vendor/lib[64]/hw में SP-HAL
  • SP-HAL-Dep in /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