प्रीइंस्टॉल्ड सिस्टम पैकेज

एंड्रॉइड एक ही डिवाइस पर एकाधिक उपयोगकर्ताओं का समर्थन करता है। अधिक जानने के लिए, एकाधिक उपयोगकर्ताओं का समर्थन करना देखें। चूँकि सभी सिस्टम पैकेज सभी प्रकार के एंड्रॉइड उपयोगकर्ताओं के लिए उपयोगी नहीं होते हैं, आप यह निर्दिष्ट करने के लिए एक अनुमति सूची का उपयोग कर सकते हैं कि प्रत्येक प्रकार के उपयोगकर्ता पर कौन से सिस्टम पैकेज पहले से इंस्टॉल होने चाहिए। अनावश्यक सिस्टम पैकेजों को पहले से इंस्टॉल न करके, आप उपयोगकर्ता निर्माण समय, प्रारंभ समय और मेमोरी उपयोग को अनुकूलित कर सकते हैं।

यह घोषित करने के लिए कि नए उपयोगकर्ताओं के लिए उनके उपयोगकर्ता प्रकार के आधार पर शुरू में कौन से सिस्टम पैकेज स्थापित किए frameworks/base/data/etc/preinstalled-packages-platform.xml सिस्टम कॉन्फ़िगरेशन XML फ़ाइलों का उपयोग करें। डिवाइस पर सभी सिस्टम पैकेजों में आदर्श रूप से एक XML फ़ाइल में एक प्रविष्टि होनी चाहिए (इसके मैनिफ़ेस्ट नाम से कुंजीबद्ध), स्थिर ओवरले को छोड़कर, जो इसके बजाय उनके संबंधित ओवरले लक्ष्य पैकेज के लिए प्रविष्टि के अनुसार स्वचालित रूप से व्यवहार किया जाता है। जिस तरह से डिवाइस को सिस्टम पैकेजों को संभालना चाहिए जो यहां सूचीबद्ध नहीं हैं वह कॉन्फिग मोड द्वारा नियंत्रित किया जाता है।

उपयोगकर्ता प्रकार

आधार उपयोगकर्ता-प्रकार (प्रत्येक उपयोगकर्ता इनमें से कम से कम एक प्रकार का होगा) हैं:

उपयोगकर्ता का प्रकार विवरण
SYSTEM उपयोगकर्ता 0.
FULL कोई भी गैर-प्रोफ़ाइल मानव उपयोगकर्ता.
PROFILE एक प्रोफ़ाइल मानव उपयोगकर्ता.

प्रत्येक का सटीक अर्थ frameworks/base/core/java/android/content/pm/UserInfo.java में परिभाषित किया गया है।

व्यक्तिगत उपयोगकर्ता प्रकारों को निर्दिष्ट करके अधिक विस्तृत नियंत्रण प्राप्त किया जा सकता है क्योंकि प्रत्येक उपयोगकर्ता वास्तव में इन उपयोगकर्ता प्रकारों में से एक है, जिसमें frameworks/base/core/java/android/os/UserManager.java और किसी भी OEM कस्टम उपयोगकर्ता में परिभाषित एओएसपी उपयोगकर्ता प्रकार शामिल हैं। frameworks/base/services/core/java/com/android/server/pm/UserTypeFactory.java. अधिक जानकारी के लिए उपयोगकर्ता प्रकार पृष्ठ देखें। वर्तमान में, AOSP उपयोगकर्ता प्रकारों में शामिल हैं:

  • android.os.usertype.full.SYSTEM
  • android.os.usertype.full.SECONDARY
  • android.os.usertype.full.GUEST
  • android.os.usertype.full.DEMO
  • android.os.usertype.full.RESTRICTED
  • android.os.usertype.profile.MANAGED
  • android.os.usertype.system.HEADLESS

उदाहरण

निम्नलिखित उदाहरण सबसे आम उपयोग के मामलों को संबोधित करते हैं:

  1. सिस्टम पैकेज को केवल उपयोगकर्ता 0 में पूर्व-स्थापित करने के लिए:
    <install-in-user-type package="com.android.example">
        <install-in user-type="SYSTEM" />
     </install-in-user-type>
    
  2. एक सिस्टम पैकेज को सभी मानव उपयोगकर्ताओं (जैसे कि एक वेब ब्राउज़र) पर पूर्व-स्थापित करने के लिए, यानी, FULL या PROFILE प्रकार के किसी भी उपयोगकर्ता पर स्थापित किया जाना है, जो सभी मानव उपयोगकर्ताओं को संबोधित करता है:
    <install-in-user-type package="com.android.example">
        <install-in user-type="FULL" />
        <install-in user-type="PROFILE" />
    </install-in-user-type>
    
  3. प्रोफ़ाइल उपयोगकर्ताओं को छोड़कर सभी मानव उपयोगकर्ताओं पर सिस्टम पैकेज पूर्व-स्थापित होना चाहिए। उदाहरण के लिए, इसे वॉलपेपर ऐप पर लागू किया जा सकता है:
    <install-in-user-type package="com.android.example">
        <install-in user-type="FULL" />
    </install-in-user-type>
    
  4. कुछ सिस्टम पैकेज वास्तव में सभी उपयोगकर्ताओं के लिए उपलब्ध होने आवश्यक हैं, चाहे वे किसी भी प्रकार के हों। इन मामलों में, उपयोग करें:
    <install-in-user-type package="com.android.example">
        <install-in user-type="SYSTEM">
        <install-in user-type="FULL" />
        <install-in user-type="PROFILE" />
    </install-in-user-type>
    
  5. व्यक्तिगत उपयोगकर्ता प्रकार निर्दिष्ट करके अधिक विस्तृत विकल्प भी उपलब्ध हैं। उदाहरण के लिए, निम्नलिखित नमूना कोड इस पैकेज को किसी भी उपयोगकर्ता पर स्थापित करता है जिसका उपयोगकर्ता प्रकार एक प्रबंधित प्रोफ़ाइल या अतिथि है या SYSTEM बेस प्रकार का है।
    <install-in-user-type package="com.android.example">
        <install-in user-type="android.os.usertype.profile.MANAGED" />
        <install-in user-type="android.os.usertype.full.GUEST" />
        <install-in user-type="SYSTEM">
    </install-in-user-type>
    

इंस्टॉल न करें टैग

do-not-install-in टैग का उपयोग करके पैकेजों को विशेष उपयोगकर्ता प्रकारों पर पूर्व-स्थापित होने से भी रोका जा सकता है। ध्यान दें कि do-not-install-in टैग किसी भी फ़ाइल में install-in टैग को ओवरराइड कर देते हैं। उदाहरण के लिए:

<install-in-user-type package="com.android.example">
    <install-in user-type="FULL" />
    <do-not-install-in user-type="android.os.usertype.full.GUEST"/>
</install-in-user-type>
यदि कोई उपयोगकर्ता android.os.usertype.full.GUEST (FULL का एक उपप्रकार) प्रकार का है, तो यह पैकेज इंस्टॉल नहीं किया जाएगा क्योंकि do-not-install-in टैग को install-in पर प्राथमिकता दी जाती है।

config.xml के साथ व्यवहार को नियंत्रित करना

कॉन्फ़िगरेशन संसाधन मान config_userTypePackageWhitelistMode इस सुविधा को नियंत्रित करता है और यह निर्धारित करता है कि कोई डिवाइस सिस्टम पैकेजों की व्याख्या कैसे करता है जिनमें किसी भी उपयोगकर्ता प्रकार के लिए कोई प्रविष्टि नहीं है। अधिक जानकारी के लिए, frameworks/base/core/res/res/values/config.xml#config_userTypePackageWhitelistMode देखें।

frameworks/base/core/res/res/values/config.xml में, config_userTypePackageWhitelistMode नामक पूर्णांक को निम्नलिखित मानों के संयोजन पर सेट करें। इन झंडों को जोड़ा जा सकता है. सबसे महत्वपूर्ण झंडे हैं:

कीमत विवरण
0 (0b0000) अक्षम करना। सभी सिस्टम पैकेज स्थापित करें.
1 (0b0001) लागू करना. अनुमति सूचीबद्ध होने पर ही सिस्टम पैकेज स्थापित करें।
4 (0b0100) अनुमति सूची फ़ाइल में उल्लिखित किसी भी पैकेज को अंतर्निहित रूप से अनुमति सूची में न देखें।
8 (0b1000) अनुमति सूची फ़ाइल में उल्लिखित किसी भी पैकेज को केवल सिस्टम उपयोगकर्ता के लिए अंतर्निहित अनुमति सूची के रूप में न मानें।

निम्नलिखित कॉन्फ़िगरेशन सुविधा को सक्षम करेगा (ताकि install-in और do-not-install-in टैग का पालन किया जा सके) लेकिन किसी भी गैर-उल्लेखित सिस्टम पैकेज का इलाज करेगा जैसे कि वे सभी उपयोगकर्ताओं के लिए install-in हैं:

<integer name="config_userTypePackageWhitelistMode">5</integer>