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

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

কোন সিস্টেম প্যাকেজ নতুন ব্যবহারকারীদের জন্য প্রাথমিকভাবে ইনস্টল করা উচিত তা ঘোষণা করতে frameworks/base/data/etc/preinstalled-packages-platform.xml, মডেল করা সিস্টেম কনফিগারেশন XML ফাইল ব্যবহার করুন। এটি ব্যবহারকারীর ধরনের উপর ভিত্তি করে করা হয়। ডিভাইসে থাকা সব সিস্টেম প্যাকেজের মধ্যে আদর্শভাবে XML ফাইলে (এর ম্যানিফেস্ট নামের মাধ্যমে কী করা) একটি এন্ট্রি থাকতে হবে। স্ট্যাটিক ওভারলে এর ব্যতিক্রম। এর পরিবর্তে, এগুলিকে সংশ্লিষ্ট ওভারলে টার্গেট প্যাকেজের এন্ট্রি অনুযায়ী অটোমেটিক ম্যানেজ করা হয়। ডিভাইসটি যেভাবে এখানে তালিকাভুক্ত নয় এমন সিস্টেম প্যাকেজ হ্যান্ডেল করবে তা কনফিগার মোড দ্বারা নিয়ন্ত্রিত হয়।

ব্যবহারকারীর ধরন

বেস ব্যবহারকারীর ধরন (প্রত্যেক ব্যবহারকারী অন্তত এই ধরনের কোনও একটি):

ব্যবহারকারীর ধরন বর্ণনা
SYSTEM ব্যবহারকারী ০।
FULL প্রোফাইল নেই এমন কোনও হিউম্যান ব্যবহারকারী।
PROFILE প্রোফাইল হিউম্যান ব্যবহারকারী।

প্রতিটির সঠিক অর্থ frameworks/base/core/java/android/content/pm/UserInfo.java-এ সংজ্ঞায়িত করা আছে।

প্রতিটি ব্যবহারকারী ঠিক এই ব্যবহারকারীর ধরনগুলির মধ্যে একটি হওয়ার কারণে, আলাদা আলাদা ব্যবহারকারীর ধরন নির্দিষ্ট করে আরও সূক্ষ্ম কন্ট্রোল পাওয়া যেতে পারে, যার মধ্যে frameworks/base/core/java/android/os/UserManager.java-এ সংজ্ঞায়িত AOSP ব্যবহারকারীর ধরন এবং frameworks/base/services/core/java/com/android/server/pm/UserTypeFactory.java.-এ সংজ্ঞায়িত যেকোনও OEM কাস্টম ব্যবহারকারীর ধরন অন্তর্ভুক্ত। আরও তথ্যের জন্য ব্যবহারকারীর ধরন পৃষ্ঠা দেখুন। বর্তমানে, 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.profile.PRIVATE
  • android.os.usertype.system.HEADLESS

উদাহরণ

নিচে দেওয়া উদাহরণগুলি সবচেয়ে সাধারণ ব্যবহারের ক্ষেত্রে প্রযোজ্য:

  1. কোনও সিস্টেম প্যাকেজ শুধুমাত্র ব্যবহারকারী ০-এর জন্য আগে থেকে ইনস্টল করা থাকলে তবেই:
    <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 ধরনের হন (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) শুধু SYSTEM ব্যবহারকারীর জন্য, অনুমোদিত তালিকায় উল্লেখ করা নেই এমন যেকোনও প্যাকেজকে পরোক্ষভাবে অনুমোদিত তালিকায় অন্তর্ভুক্ত হিসেবে বিবেচনা করুন।

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

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