यह पृष्ठ एंड्रॉइड 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