प्लैटफ़ॉर्म से साइन की गई, शेयर की गई यूआईडी की अनुमति वाली सूची

प्लैटफ़ॉर्म के हस्ताक्षर वाले ऐप्लिकेशन, ऐसे ऐप्लिकेशन होते हैं जो प्लैटफ़ॉर्म पैकेज (android) के साथ एक ही (या उससे मिलता-जुलता) हस्ताक्षर वाला सर्टिफ़िकेट शेयर करते हैं. प्लैटफ़ॉर्म के हस्ताक्षर वाला ऐप्लिकेशन, सिस्टम ऐप्लिकेशन (सिस्टम इमेज पार्टिशन पर मौजूद) या नॉनसिस्टम ऐप्लिकेशन हो सकता है. प्लैटफ़ॉर्म के हस्ताक्षर वाले शेयर किए गए यूआईडी, ऐसे शेयर किए गए यूआईडी (android:sharedUserId) होते हैं जिनमें प्लैटफ़ॉर्म के हस्ताक्षर वाले ऐप्लिकेशन शामिल होते हैं. डीबग किए जा सकने वाले बिल्ड ऐसे बिल्ड होते हैं जिनके android.os.Build.isDebuggable() true दिखाता है. जैसे, userdebug या eng बिल्ड.

पहले, डिवाइस बनाने वाली कंपनियों के पास यह कंट्रोल नहीं होता था कि प्लैटफ़ॉर्म के हस्ताक्षर वाले कौनसे नॉनसिस्टम ऐप्लिकेशन, प्लैटफ़ॉर्म के हस्ताक्षर वाले शेयर किए गए यूआईडी में शामिल हो सकते हैं. Android 15 से, मैन्युफ़ैक्चरर, प्लैटफ़ॉर्म के हस्ताक्षर वाले नॉनसिस्टम ऐप्लिकेशन को, प्लैटफ़ॉर्म के हस्ताक्षर वाले शेयर किए गए यूआईडी में शामिल होने की अनुमति दे सकते हैं. इसके लिए, उन्हें सिस्टम कॉन्फ़िगरेशन की XML फ़ाइलों में बदलाव करना होगा. ये फ़ाइलें /etc/sysconfig डायरेक्ट्री में मौजूद होती हैं. अगर किसी प्लैटफ़ॉर्म से साइन किए गए नॉनसिस्टम ऐप्लिकेशन को, प्लैटफ़ॉर्म से साइन किए गए शेयर किए गए यूआईडी के लिए अनुमति वाली सूची में नहीं जोड़ा जाता है और ऐप्लिकेशन अब भी प्लैटफ़ॉर्म से साइन किए गए शेयर किए गए यूआईडी (इसके मेनिफ़ेस्ट में android:sharedUserId के साथ) में शामिल होने की कोशिश करता है, तो उस ऐप्लिकेशन को डीबग नहीं की जा सकने वाली बिल्ड पर इंस्टॉल नहीं किया जा सकता.

अनुमति वाली सूची जोड़ना

एक एक्सएमएल फ़ाइल या एक से ज़्यादा एक्सएमएल फ़ाइलों में, ऐप्लिकेशन के लिए अनुमति वाली सूचियां बनाई जा सकती हैं. ये सूचियां, frameworks/base/data/etc/package-shareduid-allowlist.xml की तरह होती हैं:

<!--
This XML defines an allowlist for packages that want to join a particular shared-uid.
If a non-system package that is signed with platform signature, is trying to join a particular
shared-uid, and not in this list, the installation will fail.

- The "package" XML attribute refers to the app's package name.
- The "shareduid" XML attribute refers to the shared uid name.
  -->

<config>
    <allow-package-shareduid package="android.test.settings" shareduid="android.uid.system" />
</config>

अनुमति मिली सूची ढूंढना

अनुमति वाली सूची में मौजूद किसी एंट्री का पता लगाने के लिए, अपने प्लैटफ़ॉर्म पर साइन किए गए ऐसे ऐप्लिकेशन को इंस्टॉल करने की कोशिश करें जिसे डीबग नहीं किया जा सकता. इसके बाद, देखें कि उसे अब भी इंस्टॉल किया जा सकता है या नहीं. अगर ऐसा नहीं है, तो डिवाइस के लॉग में चेतावनी वाले मैसेज के इस फ़ॉर्मैट की जांच करें:

Non-preload app {PACKAGE_NAME} signed with platform signature and joining shared uid: {SHARED_UID_NAME}