एसडीके एक्सटेंशन

एसडीके एक्सटेंशन मॉड्यूल डिवाइस के एक्सटेंशन एसडीके स्तर को तय करता है और एक्सटेंशन एसडीके स्तर को क्वेरी करने के लिए ऐप्स को एपीआई प्रदान करता है। यह मॉड्यूल अद्यतन करने योग्य है, जिसका अर्थ है कि यह सामान्य एंड्रॉइड रिलीज़ चक्र के बाहर कार्यक्षमता के लिए अपडेट प्राप्त कर सकता है।

एसडीके एक्सटेंशन इसके लिए जिम्मेदार है:

  • डिवाइस का एक्सटेंशन एसडीके स्तर तय करना।
  • एक्सटेंशन एसडीके स्तर पर क्वेरी करने के लिए ऐप्स के लिए एपीआई प्रदान करना।
  • (एंड्रॉइड 12 शुरू करते हुए) BOOTCLASSPATH , DEX2OATBOOTCLASSPATH और SYSTEMSERVERCLASSPATH पर्यावरण चर के लिए मान निर्धारित करना।

मॉड्यूल प्रारूप

SDK एक्सटेंशन मॉड्यूल ( com.android.sdkext ) APEX प्रारूप में है और Android 11 या उच्चतर चलाने वाले उपकरणों के लिए उपलब्ध है।

पैकेज प्रारूप

SDK एक्सटेंशन मॉड्यूल ( com.google.android.sdkext ) APEX प्रारूप में है और इसमें निम्नलिखित घटक शामिल हैं:

  • (एंड्रॉइड 12 शुरू करते हुए) bin/derive_classpath : एक मूल बाइनरी जो डिवाइस बूट प्रक्रिया की शुरुआत में चलती है। यह सिस्टम और अन्य मॉड्यूल से अलग-अलग क्लासपाथ कॉन्फ़िगरेशन फ़ाइलों को पढ़ता है, उन्हें मर्ज करता है, और CLASSPATH पर्यावरण चर की परिभाषा को परिभाषित करता है।

  • bin/derive_sdk : एक मूल बाइनरी जो डिवाइस बूट प्रक्रिया के आरंभ में चलती है और एक्सटेंशन एसडीके से संबंधित सिस्टम गुणों को सेट करने के लिए अन्य मॉड्यूल के मेटाडेटा को पढ़ती है (उदाहरण के लिए, build.version.extensions.r )।

  • javalib/framework-sdkextension.jar : यह फ़ाइल बूटक्लासपाथ पर है जो एक्सटेंशन एसडीके स्तर को क्वेरी करने के लिए ऐप्स को एपीआई दिखाती है।

एक्सटेंशन एसडीके स्तर प्राप्त करना

derive_sdk प्रोग्राम प्रत्येक APEX मॉड्यूल के अंदर etc/sdkinfo.binarypb उपपथ में बाइनरी प्रोटोबफ़ फ़ाइलों के रूप में संग्रहीत मेटाडेटा को पढ़ता है। प्रोटोबफ़ संरचना के विवरण के लिए, protobuf फ़ाइल देखें।

रीडिंग एक्सटेंशन एसडीके स्तर

SDK एक्सटेंशन मॉड्यूल android.os.ext पैकेज में एक SdkExtensions जावा क्लास को उजागर करता है। SDK एक्सटेंशन के संस्करण को पढ़ने के लिए getExtensionVersion(int) विधि का उपयोग करें (उदाहरण के लिए, getExtensionVersion(Build.VERSION_CODES.R) )।

क्लासपाथ प्राप्त करना

derive_classpath सेवा /system/etc/classpaths/ और /apex/*/etc/classpaths/ में अलग-अलग कॉन्फ़िगरेशन फ़ाइलों को पढ़ती है और मर्ज करती है। प्रत्येक कॉन्फ़िगरेशन classpaths.proto से प्रोटोबफ संदेश को प्रोटो बाइनरी प्रारूप में संग्रहीत करता है। क्लासपाथ प्रविष्टियों का क्रम निर्धारित करने वाला सटीक विलय एल्गोरिदम derive_classpath.cpp में वर्णित है और समय के साथ बदल सकता है।