Signed Config सुविधा की मदद से, APK में गैर-एसडीके इंटरफ़ेस की पाबंदियों का कॉन्फ़िगरेशन एम्बेड किया जा सकता है. इससे, ब्लैकलिस्ट से कुछ खास गैर-एसडीके इंटरफ़ेस हटाए जा सकते हैं, ताकि AndroidX उनका सुरक्षित तरीके से इस्तेमाल कर सके. इससे, AndroidX की टीम, Android के उन वर्शन पर नई सुविधाओं के लिए सहायता जोड़ सकती है जो पहले ही रिलीज़ किए जा चुके हैं. यह सुविधा, Android 10 और इसके बाद के वर्शन पर काम करती है.
Signed Config की सुविधा को सही तरीके से लागू करने से यह पक्का होता है कि AndroidX की लाइब्रेरी, आने वाले समय में डिवाइसों पर सही तरीके से काम करेंगी.
इस सुविधा को पसंद के मुताबिक नहीं बनाया जा सकता. यह सुविधा, AOSP में पूरी तरह से काम करती है. साथ ही, इसे लागू करने के लिए ओईएम को कोई मेहनत नहीं करनी पड़ती.
उदाहरण और सोर्स
सुविधा को लागू करने की प्रोसेस, सिस्टम सर्वर में frameworks/base/services/core/java/com/android/server/signedconfig पर होती है. सीटीएस टेस्ट 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 एनकोड किया गया डेटा होता है. SettingsProvider में ग्लोबल सेटिंग पर लागू की जाने वाली, JSON-एनकोड की गई कॉन्फ़िगरेशन वैल्यू, कुंजी android.settings.global की वैल्यू होती हैं. android.settings.global.signature की वैल्यू, JSON डेटा का ECDSA-p256 सिग्नेचर होती है.
सिग्नेचर का इस्तेमाल, कॉन्फ़िगरेशन डेटा के सोर्स की पुष्टि करने के लिए किया जाता है.
यह सुविधा, उपयोगकर्ताओं को नहीं दिखती.
पसंद के मुताबिक बनाना
इस सुविधा को पसंद के मुताबिक नहीं बनाया जा सकता. ओईएम को इस सुविधा में बदलाव करने से बचना चाहिए. इसमें कुंजियों को बदलना भी शामिल है. इसमें किसी भी तरह का बदलाव करने पर, आने वाले समय में AndroidX, प्रभावित डिवाइसों पर सही तरीके से काम नहीं कर पाएगा.
सत्यापन
सीटीएस टेस्ट CtsSignedConfigHostTestCases से, सुविधा को लागू करने की प्रोसेस की पुष्टि की जाती है.
किसी सही APK को इंस्टॉल करके और adb logcat के आउटपुट की जांच करके, इस सुविधा की मैन्युअल तौर पर भी जांच की जा सकती है:
$ adb install CtsSignedConfigTestAppV1.apk
...
$ adb logcat
...
I SignedConfig: Verified config using production key
...