يتيح نظام التشغيل Android إمكانية إضافة حسابات لعدة مستخدمين على جهاز واحد. لمزيد من المعلومات، اطّلِع على إتاحة التطبيق لمستخدمين متعدّدين. بما أنّ بعض حِزم النظام قد لا تكون مفيدة لجميع أنواع مستخدمي Android، يمكنك استخدام قائمة مسموح بها لتحديد حِزم النظام التي يجب تثبيتها مسبقًا على كل نوع من المستخدمين. من خلال عدم تثبيت حِزم النظام غير الضرورية مسبقًا، يمكنك تحسين أوقات إنشاء المستخدمين وأوقات بدء التشغيل واستخدام الذاكرة.
استخدام ملفات XML الخاصة بإعداد النظام، المصممة وفقًا لنموذج
frameworks/base/data/etc/preinstalled-packages-platform.xml
،
للإعلان عن حِزم النظام التي يجب تثبيتها في البداية للمستخدمين الجُدد
بناءً على نوع المستخدم. من المفترض أن تحتوي جميع حِزم النظام على الجهاز على
إدخال في ملف XML (مفتاحه هو اسم البيان)، باستثناء التراكبات الثابتة،
التي تتم معالجتها تلقائيًا وفقًا لإدخال الحزمة المستهدفة للتراكب المعني.
يتم التحكّم في الطريقة التي يجب أن يتعامل بها الجهاز
مع حِزم النظام غير المُدرَجة هنا من خلال
وضع الضبط.
أنواع المستخدِمين
في ما يلي أنواع المستخدمين الأساسيين (كل مستخدم واحد على الأقل من هذه الأنواع):
نوع المستخدم | الوصف |
---|---|
SYSTEM |
المستخدِم 0 |
FULL |
أي مستخدم بشري غير مرتبط بملف شخصي |
PROFILE |
ملف شخصي لمستخدم بشري |
ويتم تعريف المعنى الدقيق لكل منها في
frameworks/base/core/java/android/content/pm/UserInfo.java
يمكن الحصول على مزيد من التحكّم الدقيق من خلال تحديد أنواع المستخدمين الفرديين لأنّ
كل مستخدم يندرج تمامًا ضمن أحد أنواع المستخدمين هذه، بما في ذلك أنواع مستخدمي AOSP
المحدّدة في frameworks/base/core/java/android/os/UserManager.java
وأي أنواع مستخدمين مخصّصة لمصنّعي المعدّات الأصلية محدّدة في
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
أمثلة
تتناول الأمثلة التالية حالات الاستخدام الأكثر شيوعًا:
- بالنسبة إلى حزمة النظام ليتم تثبيتها مسبقًا في المستخدم 0 فقط:
<install-in-user-type package="com.android.example"> <install-in user-type="SYSTEM" /> </install-in-user-type>
- لكي تكون حزمة النظام مثبّتة مسبقًا على جميع المستخدمين (مثل متصفّح الويب)،
أي أن يتم تثبيتها على أي مستخدم من النوع
FULL
أوPROFILE
، الذي يخاطب جميع المستخدمين:<install-in-user-type package="com.android.example"> <install-in user-type="FULL" /> <install-in user-type="PROFILE" /> </install-in-user-type>
- لتثبيت حزمة نظام مسبقًا على جميع المستخدمين باستثناء مستخدمي الملفات الشخصية
على سبيل المثال، يمكن تطبيق ذلك على تطبيق خلفية:
<install-in-user-type package="com.android.example"> <install-in user-type="FULL" /> </install-in-user-type>
- يلزم أن تكون بعض حزم النظام متوفرة على جميع المستخدمين، بغض النظر عن
الكتابة. في هذه الحالات، استخدِم:
<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>
- تتوفّر أيضًا خيارات أكثر تفصيلاً من خلال تحديد
أنواع مستخدمين فرديين. على سبيل المثال، يُثبِّت نموذج الرمز البرمجي التالي هذه الحزمة على أي مستخدم
يكون نوع المستخدم الخاص به هو ملف شخصي مُدار أو ضيف أو من النوع
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) |
اعتبار أي حزمة غير مذكورة في ملف القائمة المسموح بها مُدرَجة ضمن القائمة المسموح بها بشكل ضمني لمستخدم SYSTEM فقط |
تفعِّل الإعدادات التالية الميزة (كي يتم الالتزام بعلامتَي install-in
و
do-not-install-in
) ولكنّها تتعامل مع أي حزم نظام غير مُشار إليها
كأنّها install-in
لجميع المستخدمين:
<integer name="config_userTypePackageWhitelistMode">5</integer>