اعتبارًا من 27 آذار (مارس) 2025، ننصحك باستخدام android-latest-release بدلاً من aosp-main لإنشاء AOSP والمساهمة فيه. لمزيد من المعلومات، يُرجى الاطّلاع على التغييرات في AOSP.
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
يتيح نظام التشغيل 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 فقط:
لكي تكون حزمة النظام مثبَّتة مسبقًا على جميع المستخدمين (مثل متصفّح الويب)،
أي أن يتم تثبيتها على أي مستخدم من النوع FULL أو PROFILE،
الذي يخاطب جميع المستخدمين:
تتوفّر أيضًا خيارات أكثر دقة من خلال تحديد
أنواع مستخدمين فرديين. على سبيل المثال، يُثبِّت نموذج الرمز البرمجي التالي هذه الحزمة على أي مستخدم
يكون نوع المستخدم لديه هو ملف شخصي مُدار أو ضيف أو من النوع SYSTEM
الأساسي.
يمكن أيضًا منع تثبيت الحِزم مسبقًا على أنواع مستخدمين معيّنة باستخدام علامة do-not-install-in. يُرجى العلم أنّ علامات do-not-install-in
تلغي علامات install-in في أي ملف. مثلاً:
إذا كان المستخدم من النوع 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 لجميع المستخدمين:
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-08-08 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-08-08 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Preinstalled system packages\n\nAndroid supports having multiple users on a single device. To learn more,\nsee [Supporting Multiple Users](/docs/devices/admin/multi-user).\nSince not all system packages are useful on all types of Android users, you\ncan use an allowlist to specify which system packages should be pre-installed\non each type of user. By not pre-installing unnecessary system packages, you\ncan optimize user creation times, start times, and memory usage.\n| To learn more about using this feature on *Automotive* devices, see the Android 11 section in [Removing Packages for the System User](/docs/devices/automotive/users_accounts/disable_packages#android-11).\n\nUse system configuration XML files, modeled on\n`frameworks/base/data/etc/preinstalled-packages-platform.xml`,\nto declare which system packages should be initially installed for new users\nbased on their user type. All system packages on the device should ideally have\nan entry in an XML file (keyed by its manifest name), except for static overlays,\nwhich are instead treated automatically according to the entry for their corresponding\noverlay target package.\nThe way in which the device\nshould handle system packages that are not listed here is controlled by the\n[config mode](/docs/core/permissions/preinstalled-packages#behavior).\n\nUser types\n----------\n\nBase user-types (every user is at least one of these types) are:\n\n| User type | Description |\n|-----------|----------------------------|\n| `SYSTEM` | User 0. |\n| `FULL` | Any nonprofile human user. |\n| `PROFILE` | A profile human user. |\n\nThe precise meaning of each is defined in\n`frameworks/base/core/java/android/content/pm/UserInfo.java`.\n\nMore granular control can be gained by specifying individual user types since\nevery user is exactly one of these user types, which includes the AOSP user types\ndefined in `frameworks/base/core/java/android/os/UserManager.java`\nand any OEM custom user types defined in\n`frameworks/base/services/core/java/com/android/server/pm/UserTypeFactory.java.`\nSee the [user types](/docs/devices/admin/multi-user#user_types) page for more\ninformation.\nCurrently, AOSP user types include:\n\n- `android.os.usertype.full.SYSTEM`\n- `android.os.usertype.full.SECONDARY`\n- `android.os.usertype.full.GUEST`\n- `android.os.usertype.full.DEMO`\n- `android.os.usertype.full.RESTRICTED`\n- `android.os.usertype.profile.MANAGED`\n- `android.os.usertype.profile.PRIVATE`\n- `android.os.usertype.system.HEADLESS`\n\nExamples\n--------\n\nThe following examples address the most common use cases:\n\n1. For a system package to be pre-installed in user 0 *only* : \n\n ```carbon\n \u003cinstall-in-user-type package=\"com.android.example\"\u003e\n \u003cinstall-in user-type=\"SYSTEM\" /\u003e\n \u003c/install-in-user-type\u003e\n ```\n2. For a system package to be pre-installed on all human users (such as a web browser), that is, to be installed on any user of type `FULL` or `PROFILE`, which addresses all human users: \n\n ```carbon\n \u003cinstall-in-user-type package=\"com.android.example\"\u003e\n \u003cinstall-in user-type=\"FULL\" /\u003e\n \u003cinstall-in user-type=\"PROFILE\" /\u003e\n \u003c/install-in-user-type\u003e\n ```\n3. For a system package to be pre-installed on all human users except for profile users. For example, this could be applied to a wallpaper app: \n\n ```carbon\n \u003cinstall-in-user-type package=\"com.android.example\"\u003e\n \u003cinstall-in user-type=\"FULL\" /\u003e\n \u003c/install-in-user-type\u003e\n ```\n4. Some system packages truly are required to be on all users, regardless of type. In these cases, use: \n\n ```carbon\n \u003cinstall-in-user-type package=\"com.android.example\"\u003e\n \u003cinstall-in user-type=\"SYSTEM\"\u003e\n \u003cinstall-in user-type=\"FULL\" /\u003e\n \u003cinstall-in user-type=\"PROFILE\" /\u003e\n \u003c/install-in-user-type\u003e\n ```\n5. More granular options are also available by specifying individual user types. For example, the following sample code installs this package on any user whose user type is a managed profile or a guest or is of a `SYSTEM` base type. \n\n ```carbon\n \u003cinstall-in-user-type package=\"com.android.example\"\u003e\n \u003cinstall-in user-type=\"android.os.usertype.profile.MANAGED\" /\u003e\n \u003cinstall-in user-type=\"android.os.usertype.full.GUEST\" /\u003e\n \u003cinstall-in user-type=\"SYSTEM\"\u003e\n \u003c/install-in-user-type\u003e\n ```\n\ndo-not-install-in tag\n---------------------\n\nPackages can also be prevented from being pre-installed on particular user types\nusing the `do-not-install-in` tag. Note that `do-not-install-in`\ntags override `install-in` tags in any file. For example: \n\n```carbon\n\u003cinstall-in-user-type package=\"com.android.example\"\u003e\n \u003cinstall-in user-type=\"FULL\" /\u003e\n \u003cdo-not-install-in user-type=\"android.os.usertype.full.GUEST\"/\u003e\n\u003c/install-in-user-type\u003e\n```\nIf a user is of type `android.os.usertype.full.GUEST` (a subtype of FULL), this package is **not** installed because the `do-not-install-in` tag takes precedence over `install-in`.\n\nControl behavior with config.xml\n--------------------------------\n\nThe config resource value `config_userTypePackageWhitelistMode`\ncontrols this feature and determines how a device interprets system packages\nthat have no entry for any user type. For more information, see\n`frameworks/base/core/res/res/values/config.xml#config_userTypePackageWhitelistMode`.\n\n\n| **Caution:** While changes made to the allowlist during system updates cannot uninstall pre-existing system packages from pre-existing users, they can result in the installation of additional system packages to pre-existing users.\n\nIn `frameworks/base/core/res/res/values/config.xml`, set the integer\nnamed `config_userTypePackageWhitelistMode` to a combination of\nthe following values. These flags can be combined. The most important flags are:\n\n| Value | Description |\n|--------------|------------------------------------------------------------------------------------------------------------|\n| `0 (0b0000)` | **Disable.** Install all system packages. |\n| `1 (0b0001)` | **Enforce.** Only install system packages when allowlisted. |\n| `4 (0b0100)` | Regard any package not mentioned in the allowlist file as implicitly allowlisted. |\n| `8 (0b1000)` | Regard any package not mentioned in the allowlist file as implicitly allowlisted for just the SYSTEM user. |\n\nThe following config enables the feature (so that `install-in` and\n`do-not-install-in` tags are obeyed) but treats any nonmentioned\nsystem packages as though they are `install-in` for all users: \n\n```scdoc\n\u003cinteger name=\"config_userTypePackageWhitelistMode\"\u003e5\u003c/integer\u003e\n```"]]