हस्ताक्षरित कॉन्फ़िगरेशन लागू करना

साइन्ड कॉन्फिग फीचर एपीके में गैर-एसडीके इंटरफेस प्रतिबंधों के कॉन्फ़िगरेशन को एम्बेड करने की अनुमति देता है। यह विशिष्ट गैर-एसडीके इंटरफेस को ब्लैकलिस्ट से हटाने की अनुमति देता है, ताकि एंड्रॉइडएक्स को सुरक्षित रूप से उनका उपयोग करने की अनुमति मिल सके। यह AndroidX टीम को पहले ही जारी किए जा चुके Android संस्करणों पर नई सुविधाओं के लिए समर्थन जोड़ने की अनुमति देता है। यह एंड्रॉइड 10 और बाद में समर्थित है।

साइन्ड कॉन्फिग का उचित समर्थन यह सुनिश्चित करता है कि AndroidX लाइब्रेरी भविष्य में डिवाइस पर सही ढंग से काम करेगी।

इस सुविधा का कोई अनुकूलन संभव नहीं है। यह AOSP में पूरी तरह से समर्थित है और इसे समर्थन देने के लिए किसी OEM प्रयास की आवश्यकता नहीं है।

उदाहरण और स्रोत

सिस्टम सर्वर में frameworks/base/services/core/java/com/android/server/signedconfig पर फीचर कार्यान्वयन है। CTS परीक्षण CtsSignedConfigHostTestCases में उदाहरण उपयोग और cts/hostsidetests/signedconfig/app/version1_AndroidManifest.xml में एक उदाहरण कॉन्फ़िगरेशन शामिल है।

कार्यान्वयन

सुविधा का समर्थन करने के लिए किसी प्रयास की आवश्यकता नहीं है, और कोई विशिष्ट हार्डवेयर आवश्यकताएँ नहीं हैं।

एपीके के अंदर कॉन्फ़िगरेशन और एक हस्ताक्षर को एम्बेड करने के लिए यह सुविधा दो एप्लिकेशन मेटाडेटा कुंजियों का उपयोग करती है। वे कुंजी हैं android.settings.global और android.settings.global.signature । यदि या जब AndroidX पुस्तकालयों को भविष्य में काली सूची से निकालने के लिए गैर-SDK इंटरफ़ेस की आवश्यकता होती है, तो इन कुंजियों के मान Android टीम और/या AndroidX के भाग के रूप में प्रकाशित किए जाएंगे।

APK मेटाडेटा कुंजियाँ android.settings.global और android.settings.global.signature दोनों में बेस-64 एन्कोडेड डेटा होता है। कुंजी android.settings.global का मान JSON-एन्कोडेड कॉन्फ़िगरेशन मान है जिसे SettingsProvider में वैश्विक सेटिंग्स पर लागू किया जाना है। android.settings.global.signature का मान JSON डेटा का ECDSA-p256 हस्ताक्षर है। कॉन्फ़िगरेशन डेटा की उत्पत्ति को सत्यापित करने के लिए हस्ताक्षर का उपयोग किया जाता है।

सुविधा उपयोगकर्ता दृश्यमान नहीं है।

अनुकूलन

यह सुविधा अनुकूलन के लिए अभिप्रेत नहीं है। ओईएम को चाबियों को बदलने सहित सुविधा को संशोधित करने से हतोत्साहित किया जाता है। इसमें किसी भी बदलाव के कारण भविष्य में AndroidX के प्रभावित डिवाइस पर ठीक से काम नहीं करने की संभावना है।

मान्यकरण

CTS परीक्षण CtsSignedConfigHostTestCases सुविधा कार्यान्वयन की पुष्टि करता है।

आप उपयुक्त एपीके स्थापित करके और adb logcat आउटपुट का निरीक्षण करके मैन्युअल रूप से सुविधा का परीक्षण भी कर सकते हैं:

$ adb install CtsSignedConfigTestAppV1.apk
...
$ adb logcat
...
I SignedConfig: Verified config using production key
...