प्लैटफ़ॉर्म से साइन किए गए ऐप्लिकेशन, ऐसे ऐप्लिकेशन होते हैं जो प्लैटफ़ॉर्म पैकेज (android
) के साथ एक ही (या काम करने वाला) साइनिंग सर्टिफ़िकेट शेयर करते हैं. प्लैटफ़ॉर्म से साइन किया गया ऐप्लिकेशन, सिस्टम ऐप्लिकेशन (सिस्टम इमेज के पार्टीशन में मौजूद) या नॉन-सिस्टम ऐप्लिकेशन हो सकता है. प्लैटफ़ॉर्म से साइन किए गए शेयर किए गए यूआईडी, ऐसे शेयर किए गए यूआईडी (android:sharedUserId
) होते हैं जिनमें प्लैटफ़ॉर्म से साइन किए गए ऐप्लिकेशन शामिल होते हैं. डीबग किए जा सकने वाले बिल्ड ऐसे बिल्ड होते हैं जिनके android.os.Build.isDebuggable()
से true
रिटर्न होता है, जैसे कि userdebug
या eng
बिल्ड.
पहले, डिवाइस बनाने वाली कंपनियों के पास यह कंट्रोल करने का विकल्प नहीं था कि प्लैटफ़ॉर्म से साइन किए गए कौनसे ऐसे ऐप्लिकेशन, प्लैटफ़ॉर्म से साइन किए गए शेयर किए गए यूआईडी से जुड़ सकते हैं जो सिस्टम ऐप्लिकेशन नहीं हैं. Android
15 से, मैन्युफ़ैक्चरर, प्लैटफ़ॉर्म पर साइन किए गए ऐसे ऐप्लिकेशन को साफ़ तौर पर अनुमति दे सकते हैं जो सिस्टम ऐप्लिकेशन नहीं हैं. ये ऐप्लिकेशन, /etc/permissions
डायरेक्ट्री में मौजूद सिस्टम कॉन्फ़िगरेशन की एक्सएमएल फ़ाइलों में, प्लैटफ़ॉर्म पर साइन किए गए शेयर किए गए यूआईडी में शामिल हो सकते हैं. अगर प्लैटफ़ॉर्म से साइन किए गए नॉन सिस्टम ऐप्लिकेशन को, प्लैटफ़ॉर्म से साइन किए गए यूआईडी की अनुमति वाली सूची में नहीं जोड़ा जाता है और ऐप्लिकेशन अब भी प्लैटफ़ॉर्म से साइन किए गए यूआईडी (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}