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

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

साइन किए गए कॉन्फ़िगरेशन के साथ सही तरीके से काम करने से यह पक्का होता है कि आने वाले समय में, AndroidX लाइब्रेरी डिवाइसों पर सही तरीके से काम करेंगी.

इस सुविधा को पसंद के मुताबिक नहीं बनाया जा सकता. यह AOSP में पूरी तरह काम करता है और इसे काम करने के लिए, OEM को कोई भी काम नहीं करना पड़ता.

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

यह सुविधा, frameworks/base/services/core/java/com/android/server/signedconfig पर सिस्टम सर्वर में लागू की गई है. सीटीएस जांच CtsSignedConfigHostTestCases में, इस्तेमाल का उदाहरण और cts/hostsidetests/signedconfig/app/version1_AndroidManifest.xml में कॉन्फ़िगरेशन का उदाहरण शामिल है.

लागू करना

इस सुविधा को इस्तेमाल करने के लिए, आपको कुछ करने की ज़रूरत नहीं है. साथ ही, इसके लिए किसी खास हार्डवेयर की ज़रूरत भी नहीं होती.

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

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

यह सुविधा, उपयोगकर्ता को नहीं दिखती.

पसंद के मुताबिक बनाएं

इस सुविधा को पसंद के मुताबिक बनाने के लिए नहीं बनाया गया है. OEM को इस सुविधा में बदलाव करने से बचना चाहिए. इसमें बटन बदलना भी शामिल है. इसमें कोई भी बदलाव करने पर, हो सकता है कि AndroidX, आने वाले समय में उन डिवाइसों पर ठीक से काम न करे जिन पर इस गड़बड़ी का असर पड़ा है.

पुष्टि करें

सीटीएस टेस्ट CtsSignedConfigHostTestCases, सुविधा के लागू होने की पुष्टि करता है.

इस सुविधा की जांच मैन्युअल तरीके से भी की जा सकती है. इसके लिए, सही APK इंस्टॉल करें और adb logcat आउटपुट की जांच करें:

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