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

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

पहले, डिवाइस बनाने वाली कंपनियों के पास यह कंट्रोल नहीं होता था कि वे प्लैटफ़ॉर्म पर साइन किए गए किन नॉनसिस्टम ऐप्लिकेशन को, प्लैटफ़ॉर्म पर साइन किए गए शेयर किए गए यूआईडी में शामिल होने की अनुमति दे सकती हैं. Android 15 से, मैन्युफ़ैक्चरर /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}