साइन किए हुए कॉन्फ़िगरेशन की सुविधा से, 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
में कॉन्फ़िगरेशन के उदाहरण शामिल हैं.
लागू करना
इस सुविधा को बेहतर बनाने के लिए, आपको कुछ करने की ज़रूरत नहीं है. इसके अलावा, हार्डवेयर की कोई खास ज़रूरत भी नहीं है.
यह सुविधा, APK में कॉन्फ़िगरेशन और हस्ताक्षर एम्बेड करने के लिए दो ऐप्लिकेशन मेटाडेटा कुंजियों का इस्तेमाल करती है. ये बटन 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
...