<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>

תיאור:
רכיב הבסיס של הקובץ AndroidManifest.xml. חובה מכילים רכיב <application> ולציין את המאפיינים xmlns:android ו-package.
:
xmlns:android
מגדיר את מרחב השמות של Android. המאפיין הזה מוגדר תמיד אל "http://schemas.android.com/apk/res/android".
package
ערך המאפיין package בקובץ המניפסט של ה-APK מייצג את את המזהה הייחודי של האפליקציה. הוא בפורמט של שפת Java מלאה שם החבילה של האפליקציה ל-Android. השם יכול להכיל אותיות רישיות או קטנות, מספרים, וקווים תחתונים ('_'). עם זאת, חלקים של שמות חבילה ספציפיים יכולים להתחיל רק ב- אותיות.

חשוב להקפיד לא לשנות את הערך של package, כי הפעולה הזאת יוצרת אפליקציה חדשה. משתמשים בגרסה הקודמת של האפליקציה לא מקבלים עדכון ולא יכולים להעביר את הנתונים שלהם בין הגרסה הישנה לגרסה החדשה.

במערכת ה-build המבוססת על Gradle, החל מ-AGP 7.3, אין להגדיר את הערך package ישירות בקובץ המניפסט המקורי. מידע נוסף זמין במאמר הבא: מגדירים את מזהה האפליקציה.

android:sharedUserId

הקבוע הזה הוצא משימוש החל מרמת API 29.
מזהי משתמשים משותפים גורמים להתנהגות לא מוגדרת בתוך מנהל החבילות. לכן, השימוש בהם מומלץ מאוד, וייתכן שיוסר בגרסה עתידית של Android. במקום זאת, השתמשו מנגנוני תקשורת מתאימים, כגון שירותים וספקי תוכן, כדי לסייע ביכולת הפעולה ההדדית בין רכיבים משותפים. אפליקציות קיימות לא יכולות להסיר את הערך הזה, כי העברה של מזהה משתמש משותף לא נתמכת. באפליקציות האלה צריך להוסיף android:sharedUserMaxSdkVersion="32" כדי לא להשתמש במשותף מזהה משתמש בהתקנות חדשות של משתמשים.

השם של מזהה משתמש ב-Linux שמשותף עם אפליקציות אחרות. כברירת מחדל, מערכת Android מקצה לכל אפליקציה מזהה משתמש ייחודי משלה. עם זאת, אם המאפיין מוגדר לאותו ערך עבור שניים או יותר לאפליקציות, לכולן יש אותו מזהה, כל עוד קבוצות האישורים זהות. אפליקציות עם אותו מזהה משתמש יכולות לגשת את הנתונים אחד של השני, ואם תרצו, תוכלו להפעיל באותו תהליך.

android:targetSandboxVersion
ארגז החול לטירגוט של האפליקציה. ככל שמספר הגרסה של Sandbox גבוה יותר, ככל שרמת האבטחה גבוהה יותר. ערך ברירת המחדל שלו הוא 1; אפשר גם להגדיר אותו ל-2. אם מגדירים את המאפיין הזה ל-2, משתנה ל-Sandbox אחר של SELinux.

ההגבלות הבאות חלות על ארגז חול ברמה 2:

  • ערך ברירת המחדל של usesCleartextTraffic בהגדרת אבטחת הרשת היא False.
  • שיתוף Uid אסור.

באפליקציות ללא התקנה ל-Android שמטרגטות ל-Android 8.0 (רמת API 26) ואילך, המאפיין הזה מוגדר כ-2. אפשר להגדיר את רמת ה-Sandbox בגרסה המותקנת של האפליקציה כך שתהיה פחות מגבילה רמה 1. אבל אם תעשו זאת, האפליקציה לא שומרת נתוני אפליקציה מהאפליקציה ללא התקנה מותקנת של האפליקציה. צריך להגדיר את ערך ה-Sandbox של האפליקציה המותקנת ל-2 כדי שהנתונים יישמרו מהאפליקציה ללא התקנה לגרסה המותקנת.

לאחר התקנת האפליקציה, ניתן לעדכן את ערך היעד של ארגז החול (Sandbox) רק לערך גבוה יותר. כדי לשדרג לאחור את ערך היעד של ארגז החול, צריך להסיר את האפליקציה ומחליפים אותה בגרסה שהמניפסט שלה מכיל ערך נמוך יותר למאפיין הזה.

android:sharedUserLabel

הקבוע הזה הוצא משימוש החל מרמת API 29.
מזהי משתמשים משותפים גורמים להתנהגות לא מוגדרת בתוך מנהל החבילות. לכן, השימוש בהם מומלץ מאוד, וייתכן שיוסר בגרסה עתידית של Android. במקום זאת, השתמשו מנגנוני תקשורת מתאימים, כגון שירותים וספקי תוכן, כדי לסייע ביכולת הפעולה ההדדית בין רכיבים משותפים. אפליקציות קיימות לא יכולות להסיר את הערך הזה, כי אין תמיכה בהעברה של מזהה משתמש משותף.

תווית שניתן לקרוא למשתמש עבור מזהה המשתמש המשותף. התווית מוגדרת בתור הפניה למשאב מסוג מחרוזת. הוא לא יכול להיות מחרוזת גולמית.

המאפיין הזה נוסף ברמת API 3. היא בעלת משמעות רק אם גם המאפיין sharedUserId מוגדר.

android:sharedUserMaxSdkVersion

מזהי משתמשים משותפים גורמים להתנהגות לא מוגדרת בתוך מנהל החבילות. לכן, השימוש בהם מומלץ מאוד, וייתכן שיוסר בגרסה עתידית של Android. במקום זאת, השתמשו מנגנוני תקשורת מתאימים, כגון שירותים וספקי תוכן, כדי לסייע ביכולת הפעולה ההדדית בין רכיבים משותפים.

גרסת ה-SDK המקסימלית שבה המערכת עדיין משתמשת ב-android:sharedUserId. אם הותקנה לאחרונה במכשיר שבו פועלת גרסת SDK גבוהה יותר מהערך שצוין, האפליקציה שלך מתנהגת כאילו אף פעם לא הגדרת את android:sharedUserId.

המאפיין הזה נוסף ברמת API 33. היא בעלת משמעות רק אם גם המאפיין sharedUserId מוגדר.

android:versionCode
מספר גרסה פנימי. מספר זה משמש רק כדי לקבוע גרסה אחת עדכנית יותר מגרסה אחרת, כאשר מספרים גבוהים יותר מציינים גרסאות אחרונות. זה לא מספר הגרסה שמוצג למשתמשים. מוגדר על ידי המאפיין versionName.

הערך מוגדר כמספר שלם חיובי שגדול מ-0. אפשר להגדיר את זה איך שרוצים, כל עוד לכל גרסה יש מספר גבוה יותר. לדוגמה, זה יכול להיות מספר build, או לתרגם גרסה. מספר ב-x.y למספר שלם באמצעות קידוד של x ו-y בנפרד 16 הביטים הנמוכים והעלונים. או שאפשר להגדיל את המספר באחד בכל פעם שמתפרסמת גרסה חדשה.

android:versionName
מספר הגרסה שמוצג למשתמשים. המאפיין הזה מוגדר כערך גולמי מחרוזת או כהפניה למשאב מחרוזת. למחרוזת אין מטרה אחרת מאשר להצגה למשתמשים. המאפיין versionCode מכיל את מספר הגרסה המשמעותי שנמצא בשימוש פנימי.
android:installLocation
מיקום ההתקנה שמוגדר כברירת מחדל של האפליקציה. המחרוזות הבאות של מילות מפתח קבילות:

ערך תיאור
"internalOnly" האפליקציה מותקנת באחסון פנימי של המכשיר בלבד. אם היא מוגדרת, האפליקציה אף פעם לא מתקינה באחסון חיצוני, כמו כרטיס SD. אם התבנית נפח האחסון מלא, המערכת לא תתקין את האפליקציה. זאת התנהגות ברירת המחדל אם לא מגדירים את android:installLocation.
"auto" האפליקציה יכולה להתקין באחסון חיצוני, אבל המערכת מתקינה את באחסון פנימי כברירת מחדל. אם האחסון הפנימי מלא, המערכת יתקין אותו באחסון החיצוני. לאחר ההתקנה, המשתמש יכול להעביר את האפליקציה לאחסון פנימי או חיצוני דרך הגדרות המערכת.
"preferExternal" עדיף להתקין את האפליקציה באחסון חיצוני. אין להבטיח שהמערכת תפעל בהתאם לבקשה הזו. ייתכן שהאפליקציה תותקן באתרים אחסון, אם המדיה החיצונית מלאה או לא זמינה. לאחר ההתקנה, המשתמש יכול להעביר את האפליקציה אל באחסון פנימי או חיצוני דרך הגדרות המערכת.

הערה: כברירת מחדל, האפליקציה שלכם מותקנת באחסון פנימי ולא ניתן להתקין אותו באחסון חיצוני אלא אם מגדירים את המאפיין הזה להיות "auto" או "preferExternal".

כאשר אפליקציה מותקנת באחסון חיצוני:

  • קובץ ה-APK נשמר לאחסון החיצוני, אבל כל נתוני האפליקציה, כמו מסדי נתונים, עדיין נשמרים בזיכרון הפנימי של המכשיר.
  • מאגר ה-APK שבו שמור קובץ ה-APK מוצפן באמצעות מפתח שמאפשר האפליקציה פועלת רק במכשיר שהתקין אותה. המשתמש לא יכול להעביר את כרטיס ה-SD למכשיר אחר ולהשתמש באפליקציות שמותקנות בכרטיס. אפשר להשתמש בכמה כרטיסי SD באותו מכשיר.
  • לבקשת המשתמש, ניתן להעביר את האפליקציה לאחסון הפנימי.

המשתמש עשוי גם לבקש להעביר אפליקציה מהאחסון הפנימי אל החיצוני אחסון. עם זאת, המערכת לא מאפשרת למשתמש להעביר את האפליקציה לאחסון חיצוני אם המאפיין הזה מוגדר ל-"internalOnly", שהיא הגדרת ברירת המחדל.

עבור מידע נוסף על השימוש במאפיין הזה, כולל הנחיות לשמירה על תאימות לאחור, ראה מיקום התקנת האפליקציה.

הושק ב: API ברמת 8.

הושקו ב:
רמת API 1 לכל המאפיינים, אלא אם צוין אחרת בתיאור המאפיין.

למידע נוסף:
<application>