প্রি-ইনস্টল করা সিস্টেম প্যাকেজ

অ্যান্ড্রয়েড একটি একক ডিভাইসে একাধিক ব্যবহারকারী থাকা সমর্থন করে। আরও জানতে, একাধিক ব্যবহারকারীকে সমর্থন করা দেখুন। যেহেতু সমস্ত সিস্টেম প্যাকেজ সমস্ত ধরণের অ্যান্ড্রয়েড ব্যবহারকারীদের জন্য উপযোগী নয়, তাই আপনি প্রতিটি ধরণের ব্যবহারকারীর জন্য কোন সিস্টেম প্যাকেজগুলি আগে থেকে ইনস্টল করা উচিত তা নির্দিষ্ট করতে একটি অনুমোদিত তালিকা ব্যবহার করতে পারেন। অপ্রয়োজনীয় সিস্টেম প্যাকেজগুলি প্রাক-ইনস্টল না করে, আপনি ব্যবহারকারী তৈরির সময়, শুরুর সময় এবং মেমরি ব্যবহার অপ্টিমাইজ করতে পারেন।

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 কাস্টম ব্যবহারকারীতে সংজ্ঞায়িত AOSP ব্যবহারকারীর ধরন অন্তর্ভুক্ত রয়েছে। 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 ট্যাগ ব্যবহার করে নির্দিষ্ট ব্যবহারকারীর ধরনগুলিতে প্যাকেজগুলিকে প্রাক-ইনস্টল হওয়া থেকেও প্রতিরোধ করা যেতে পারে। মনে রাখবেন যে কোনো ফাইলে 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 (সম্পূর্ণ-এর একটি উপপ্রকার) টাইপের হয়, তাহলে এই প্যাকেজটি ইনস্টল করা হবে না কারণ 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) অনুমোদিত তালিকা ফাইলে উল্লেখ করা হয়নি এমন কোনো প্যাকেজ শুধুমাত্র SYSTEM ব্যবহারকারীর জন্য অন্তর্নিহিতভাবে অনুমোদিত হিসাবে উল্লেখ করা হয়েছে।

নিম্নলিখিত কনফিগারেশন বৈশিষ্ট্যটি সক্রিয় করবে (যাতে install-in এবং do-not-install-in ট্যাগগুলি মেনে চলতে হবে) কিন্তু উল্লেখ না করা কোনও সিস্টেম প্যাকেজকে এমনভাবে ব্যবহার করবে যেন তারা সমস্ত ব্যবহারকারীর জন্য install-in করে:

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