يتيح نظام التشغيل 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.profile.PRIVATE
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
. يُرجى العلم أنّ علامات 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>