SDK टूल के एक्सटेंशन

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 इनमें बदलाव भी हो सकते हैं.