<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>
المحتوى المضمّن في:
none
يجب أن تتضمّن:
<application>
يمكن أن تتضمّن ما يلي:
<attribution>
<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، بدءًا من الإصدار AGP 7.3، لا تضبط قيمة package في ملف بيان المصدر مباشرةً. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة ضبط رقم تعريف التطبيق.

android:sharedUserId

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

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

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

تنطبق القيود التالية على بيئة الاختبار الافتراضي من المستوى 2:

  • القيمة التلقائية لسمة usesCleartextTraffic في إعدادات أمان الشبكة هي خطأ.
  • لا يُسمح بمشاركة المعرّف الفريد.

بالنسبة إلى تطبيقات Android الفورية التي تستهدف الإصدار 8.0 من نظام التشغيل Android (المستوى 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>