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

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

Signed Config की सुविधा को सही तरीके से इस्तेमाल करने से यह पक्का होता है कि AndroidX लाइब्रेरी, आने वाले समय में डिवाइसों पर सही तरीके से काम करेंगी.

इस सुविधा को पसंद के मुताबिक नहीं बनाया जा सकता. यह AOSP में पूरी तरह से काम करता है. साथ ही, इसे चालू करने के लिए ओईएम को कोई कार्रवाई करने की ज़रूरत नहीं होती.

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

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

लागू करना

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

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

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

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

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

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

Validation

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

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

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