SDK टूल एक्सटेंशन मॉड्यूल, डिवाइस के एक्सटेंशन SDK टूल का लेवल तय करता है और SDK टूल के एक्सटेंशन लेवल पर क्वेरी करने के लिए, ऐप्लिकेशन को एपीआई उपलब्ध कराता है. यह मॉड्यूल है अपडेट करने लायक. इसका मतलब है कि इसे सामान्य से अलग फ़ंक्शन के लिए अपडेट मिल सकते हैं Android रिलीज़ साइकल.
SDK टूल एक्सटेंशन इन चीज़ों के लिए ज़िम्मेदार हैं:
- डिवाइस के लिए, एक्सटेंशन SDK टूल का लेवल तय करना.
- SDK टूल के एक्सटेंशन लेवल पर क्वेरी करने के लिए, ऐप्लिकेशन को एपीआई उपलब्ध कराना.
- (Android 12 और इसके बाद के वर्शन में)
BOOTCLASSPATH
,DEX2OATBOOTCLASSPATH
, औरSYSTEMSERVERCLASSPATH
एनवायरमेंट वैरिएबल.
मॉड्यूल फ़ॉर्मैट
SDK एक्सटेंशन मॉड्यूल (com.android.sdkext
) इसमें है
APEX फ़ॉर्मैट और यह डिवाइसों के लिए उपलब्ध है
जिनमें Android 11 या इसके बाद वाला वर्शन हो.
पैकेज फ़ॉर्मैट
SDK एक्सटेंशन मॉड्यूल (com.google.android.sdkext
) इसमें है
APEX फ़ॉर्मैट और
इसमें ये कॉम्पोनेंट शामिल होते हैं:
(Android 12 और इसके बाद के वर्शन वाले डिवाइसों पर)
bin/derive_classpath
: A नेटिव बाइनरी, जो डिवाइस के बूट में सबसे पहले चलती है प्रोसेस. यह सिस्टम से अलग-अलग क्लासपाथ कॉन्फ़िगरेशन वाली फ़ाइलों को पढ़ता है और अन्य मॉड्यूल, उन्हें मर्ज करता है, औरCLASSPATH
की परिभाषा बताता है एनवायरमेंट वैरिएबल.bin/derive_sdk
: एक नेटिव बाइनरी, जो डिवाइस को चालू करने की प्रोसेस से पहले चलती है और अन्य मॉड्यूल के मेटाडेटा को पढ़ता है, ताकि एक्सटेंशन SDK टूल (उदाहरण के लिए,build.version.extensions.r
).javalib/framework-sdkextension.jar
: यह फ़ाइल बूटक्लासपाथ पर है SDK टूल के एक्सटेंशन लेवल पर क्वेरी करने के लिए, ऐप्लिकेशन में एपीआई दिखाता है.
एक्सटेंशन SDK टूल लेवल का पता लगाएं
derive_sdk
प्रोग्राम,
हर APEX मॉड्यूल के अंदर etc/sdkinfo.binarypb
सबपाथ. प्रोटोबफ़ के बारे में जानकारी
देखें, तो
protobuf
फ़ाइल से लिए जाते हैं.
एक्सटेंशन SDK टूल का लेवल पढ़ें
SDK एक्सटेंशन मॉड्यूल से पता चलता है कि
SdkExtensions
android.os.ext
पैकेज में java class. getExtensionVersion(int)
का इस्तेमाल करना
किसी SDK एक्सटेंशन के वर्शन को पढ़ने का तरीका (उदाहरण के लिए,
getExtensionVersion(Build.VERSION_CODES.R)
).
क्लास पाथ बनाना
derive_classpath
सेवा, अलग-अलग कॉन्फ़िगरेशन फ़ाइलों को पढ़ती है और उन्हें मर्ज करती है
/system/etc/classpaths/
और /apex/*/etc/classpaths/
. हर कॉन्फ़िगरेशन सेव होता है
classpaths.proto
से मिला प्रोटोबफ़ मैसेज
प्रोटो बाइनरी फ़ॉर्मैट में. मर्ज करने वाला सटीक एल्गोरिदम, जो क्रम तय करता है
में दी गई जानकारी
derive_classpath.cpp
इनमें बदलाव भी हो सकते हैं.