<manifest>

بناء الجملة:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="string"
          android:sharedUserId="string"
          android:sharedUserLabel="string resource" 
          android:sharedUserMaxSdkVersion="integer"
          android:versionCode="integer"
          android:versionName="string"
          android:installLocation=["auto" | "internalOnly" | "preferExternal"] >
    ...
</manifest>

المضمَّنة في:
لا شيء

يجب أن يحتوي على:
<application>
يمكن أن تحتوي على:
<compatible-screens>
<instrumentation>
<permission>
<permission-group>
<permission-tree>
<queries>
<supports-gl-texture>
<supports-screens>
<uses-configuration>
<uses-feature>
<uses-permission>
<uses-permission-sdk-23>
<uses-sdk>

description:
العنصر الجذر في ملف AndroidManifest.xml. يجب أن يحتوي على عنصر <application> وأن يحدّد السمتَين xmlns:android وpackage.
السمات:
xmlns:android
تحدِّد هذه السياسة مساحة اسم Android. يتم ضبط هذه السمة دائمًا على "http://schemas.android.com/apk/res/android".
package
تمثّل قيمة السمة package في ملف البيان لحزمة APK معرّف التطبيق الفريد عالميًا لتطبيقك. تم تنسيقه كاسم حزمة كامل بنمط لغة Java لتطبيق Android. يمكن أن يحتوي الاسم على أحرف كبيرة أو صغيرة وأرقام وشرطات سفلية ('_'). ومع ذلك، يمكن أن تبدأ أجزاء اسم الحزمة الفردية بأحرف فقط.

يجب عدم تغيير قيمة package، لأنّ ذلك يؤدي في الأساس إلى إنشاء تطبيق جديد. لا يتلقّى مستخدمو الإصدار السابق من تطبيقك تحديثًا ولا يمكنهم نقل بياناتهم بين الإصدار القديم والجديد.

في نظام الإنشاء المستنِد إلى Gradle، بدءًا من الإصدار 7.3 من AGP، لا يجب ضبط قيمة package في ملف البيان المصدر مباشرةً. للحصول على مزيد من المعلومات، اطّلِع على إعداد رقم تعريف التطبيق.

android:sharedUserId

تم إيقاف هذا الثابت اعتبارًا من المستوى 29 لواجهة برمجة التطبيقات.
تتسبب أرقام تعريف المستخدمين المشتركة سلوكًا غير مؤكد داخل مدير الحزم. وبالتالي، لا ننصح بشدة باستخدامها وقد تتم إزالتها في إصدار مستقبلي من Android. بدلاً من ذلك، يمكنك استخدام آليات اتصال مناسبة، مثل موفّري الخدمات والمحتوى، لتسهيل إمكانية التشغيل التفاعلي بين المكوّنات المشتركة. لا يمكن للتطبيقات الحالية إزالة هذه القيمة، لأنّ نقل بيانات رقم تعريف المستخدم المشترك غير متاح. في هذه التطبيقات، أضِف android:sharedUserMaxSdkVersion="32" لتجنُّب استخدام رقم تعريف المستخدم المشترك في عمليات تثبيت المستخدمين الجدد.

اسم رقم تعريف مستخدم Linux الذي تتم مشاركته مع التطبيقات الأخرى يعيّن نظام Android تلقائيًا رقم تعريف مستخدم فريدًا لكل تطبيق. ومع ذلك، في حال ضبط هذه السمة على القيمة نفسها لتطبيقَين أو أكثر، تشترك جميعها في المعرّف نفسه، بشرط أن تكون مجموعات الشهادات متطابقة. يمكن للتطبيقات التي لها رقم تعريف المستخدم نفسه الوصول إلى بيانات بعضها البعض، وتشغيلها في العملية نفسها إذا رغبت في ذلك.

android:targetSandboxVersion
وضع الحماية المستهدف الذي يمكن لهذا التطبيق استخدامه. كلما ارتفع رقم إصدار وضع الحماية، ارتفع مستوى الأمان. قيمتها التلقائية هي 1، ويمكنك أيضًا ضبطها على 2. يؤدي ضبط هذه السمة على 2 إلى تبديل التطبيق إلى وضع حماية SELinux مختلف.

تنطبق القيود التالية على وضع الحماية من المستوى 2:

  • إنّ القيمة التلقائية لـ usesCleartextTraffic في Network Security Config هي "خطأ".
  • غير مسموح بمشاركة معرف المستخدم.

بالنسبة إلى تطبيقات Android الفورية التي تستهدف Android 8.0 (المستوى 26 لواجهة برمجة التطبيقات) أو الإصدارات الأحدث، تم ضبط هذه السمة على 2. يمكنك ضبط مستوى وضع الحماية في الإصدار المثبَّت من تطبيقك على المستوى 1 الأقل تقييدًا. أمّا في حال إجراء ذلك، فلن يحتفظ تطبيقك ببيانات التطبيق من التطبيق الفوري إلى الإصدار المثبّت منه. يجب ضبط قيمة وضع الحماية للتطبيق المثبّت على 2 حتى تنتقل البيانات من التطبيق الفوري إلى الإصدار المثبّت.

بعد تثبيت التطبيق، يمكنك فقط تعديل قيمة وضع الحماية المستهدَف إلى قيمة أعلى. للرجوع إلى إصدار سابق من قيمة وضع الحماية المستهدف، عليك إلغاء تثبيت التطبيق واستبداله بإصدار يحتوي بيانه على قيمة أقل لهذه السمة.

android:sharedUserLabel

تم إيقاف هذا الثابت اعتبارًا من المستوى 29 لواجهة برمجة التطبيقات.
تتسبب أرقام تعريف المستخدمين المشتركة سلوكًا غير مؤكد داخل مدير الحزم. وبالتالي، لا ننصح بشدة باستخدامها وقد تتم إزالتها في إصدار مستقبلي من Android. بدلاً من ذلك، يمكنك استخدام آليات اتصال مناسبة، مثل موفّري الخدمات والمحتوى، لتسهيل إمكانية التشغيل التفاعلي بين المكوّنات المشتركة. لا يمكن للتطبيقات الحالية إزالة هذه القيمة، لأنّ نقل بيانات رقم تعريف المستخدم المشترك غير متاح.

تصنيف يمكن للمستخدم قراءته لرقم تعريف المستخدم المشترك. يتم تعيين التسمية كمرجع لمورد سلسلة. ولا يمكن أن تكون سلسلة أوّلية.

تم تقديم هذه السمة في المستوى 3 من واجهة برمجة التطبيقات. ولا يكون ذلك مفيدًا إلا إذا تم ضبط السمة sharedUserId أيضًا.

android:sharedUserMaxSdkVersion

تتسبب أرقام تعريف المستخدمين المشتركة في سلوك غير مؤكد ضمن مدير الحزم. وبالتالي، لا ننصح بشدة باستخدامها وقد تتم إزالتها في إصدار مستقبلي من Android. بدلاً من ذلك، يمكنك استخدام آليات اتصال مناسبة، مثل موفّري الخدمات والمحتوى، لتسهيل إمكانية التشغيل التفاعلي بين المكوّنات المشتركة.

تشير هذه السمة إلى الحد الأقصى لإصدار حزمة تطوير البرامج (SDK) الذي لا يزال النظام يستخدم android:sharedUserId فيه. إذا تم تثبيت تطبيقك مؤخرًا على جهاز يعمل بإصدار SDK أعلى من القيمة المحدّدة، سيعمل التطبيق كما لو لم تحدّد android:sharedUserId مطلقًا.

تم تقديم هذه السمة في المستوى 33 من واجهة برمجة التطبيقات. ولا يكون ذلك مفيدًا إلا إذا تم ضبط السمة sharedUserId أيضًا.

android:versionCode
رقم إصدار داخلي يُستخدم هذا الرقم فقط لتحديد ما إذا كان أحد الإصدارات أحدث من إصدار آخر، حيث تشير الأرقام الأعلى إلى الإصدارات الأكثر حداثة. هذا ليس رقم الإصدار المعروض للمستخدمين والذي يتم ضبطه من خلال السمة versionName.

يتم ضبط القيمة كعدد صحيح موجب أكبر من 0. يمكنك تعريفها على النحو الذي تريده، طالما أنّ كل نسخة تالية تحتوي على عدد أكبر. على سبيل المثال، يمكن أن يكون رقم إصدار، أو يمكنك ترجمة رقم إصدار بتنسيق "x.y" إلى عدد صحيح من خلال ترميز "x" و "y" بشكل منفصل في الـ 16 بت الأدنى والأعلى. أو يمكنك زيادة العدد بمقدار واحد في كل مرة يتم فيها طرح إصدار جديد.

android:versionName
رقم الإصدار المعروض للمستخدمين يتم تعيين هذه السمة كسلسلة أولية أو كمرجع لمورد سلسلة. ليس للسلسلة أي غرض آخر سوى العرض للمستخدمين. تتضمن السمة versionCode رقم الإصدار المهم المستخدَم داخليًا.
android:installLocation
موقع التثبيت التلقائي للتطبيق. يتم قبول سلاسل الكلمات الرئيسية التالية:

القيمة الوصف
"internalOnly" يتم تثبيت التطبيق على مساحة تخزين الجهاز الداخلية فقط. فإذا تم تعيين ذلك، فلن يتم تثبيت التطبيق مطلقًا على وحدة التخزين الخارجية، مثل بطاقة SD. في حال امتلاء وحدة التخزين الداخلية، لن يثبّت النظام التطبيق. وهذا هو السلوك التلقائي في حال لم تحدّد android:installLocation.
"auto" يمكن تثبيت التطبيق على وحدة تخزين خارجية، ولكن النظام يثبّت التطبيق على وحدة التخزين الداخلية افتراضيًا. إذا كانت وحدة التخزين الداخلية ممتلئة، فسيثبّتها النظام على وحدة التخزين الخارجية. بمجرد التثبيت، يمكن للمستخدم نقل التطبيق إلى وحدة تخزين داخلية أو خارجية من خلال إعدادات النظام.
"preferExternal" يفضل التطبيق أن يتم تثبيته على وحدة تخزين خارجية. ما من ضمانة بأنّ النظام سيلبي هذا الطلب. قد يتم تثبيت التطبيق على وحدة التخزين الداخلية إذا كانت الوسائط الخارجية غير متاحة أو ممتلئة. بمجرد التثبيت، يمكن للمستخدم نقل التطبيق إلى وحدة تخزين داخلية أو خارجية من خلال إعدادات النظام.

ملاحظة: يتم تثبيت تطبيقك تلقائيًا على وحدة تخزين داخلية ولا يمكن تثبيته على وحدة تخزين خارجية ما لم تحدّد هذه السمة لتكون "auto" أو "preferExternal".

عند تثبيت تطبيق على وحدة تخزين خارجية:

  • يتم حفظ ملف APK في وحدة التخزين الخارجية، ولكن تظل أي بيانات للتطبيق، مثل قواعد البيانات، محفوظة في ذاكرة الجهاز الداخلية.
  • يتم تشفير الحاوية التي تم حفظ ملف APK فيها باستخدام مفتاح يسمح للتطبيق بالعمل فقط على الجهاز الذي تم تثبيته عليه. لا يمكن للمستخدم نقل بطاقة SD إلى جهاز آخر واستخدام التطبيقات المثبتة على البطاقة. يمكن استخدام بطاقات SD متعددة مع الجهاز نفسه.
  • يمكن نقل التطبيق إلى وحدة التخزين الداخلية بناءً على طلب المستخدم.

قد يطلب المستخدم أيضًا نقل تطبيق من وحدة التخزين الداخلية إلى وحدة التخزين الخارجية. ومع ذلك، لا يسمح النظام للمستخدم بنقل التطبيق إلى وحدة تخزين خارجية في حال ضبط هذه السمة على "internalOnly"، وهو الإعداد التلقائي.

لمزيد من المعلومات حول استخدام هذه السمة، بما في ذلك كيفية الحفاظ على التوافق مع الأنظمة القديمة، يُرجى الاطّلاع على الموقع الجغرافي لتثبيت التطبيق.

تم طرحه في: المستوى 8 من واجهة برمجة التطبيقات.

تم تقديمه في:
المستوى 1 من واجهة برمجة التطبيقات لجميع السمات، ما لم يُذكر خلاف ذلك في وصف السمة.

راجِع أيضًا:
<application>