Syntaxe :
<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"]
          android:allowUpdateOwnership="boolean" >
    . . .
</manifest>

contenu dans :
aucun

doit contenir :
<application>
peut contenir :
<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 :
Élément racine du fichier AndroidManifest.xml. Il doit contenir un élément <application>, et spécifier les attributs xmlns:android et package.
attributs :
xmlns:android
Définit l'espace de noms Android. Cet attribut doit toujours être défini sur "http://schemas.android.com/apk/res/android".
package
La valeur de l'attribut package dans le fichier manifeste de l'APK représente l'ID d'application unique et universel de votre application. Celui-ci doit être formaté comme un nom de package complet de style Java pour l'application Android. Ce nom peut contenir des lettres majuscules ou minuscules (de "A" à "Z"), des chiffres et des traits de soulignement ("_"). Cependant, les parties individuelles du nom de package ne peuvent commencer que par des lettres.

Veillez à ne pas modifier la valeur package : cela aurait pour effet de créer une nouvelle application. Les utilisateurs de la version antérieure de votre application ne recevraient donc pas de mise à jour et ne pourraient pas transférer leurs données.

Dans le système de compilation basé sur Gradle, à partir de la version 7.3 d'AGP, vous ne devez pas définir la valeur package directement dans le fichier manifeste source. Pour en savoir plus, consultez la section Définir l'ID d'application.

android:sharedUserId

Cette constante est obsolète depuis le niveau d'API 29.
Le partage d'ID utilisateur entraîne un comportement non déterministe dans le gestionnaire de packages. Son utilisation est donc vivement déconseillée et pourra être supprimée dans une future version d'Android. Les applications doivent plutôt utiliser des mécanismes de communication appropriés, tels que des services et des fournisseurs de contenu, pour favoriser l'interopérabilité entre les composants partagés. Notez que les applications existantes ne peuvent pas supprimer cette valeur, puisque la migration d'un ID utilisateur partagé n'est pas prise en charge. Ces applications doivent donc ajouter android:sharedUserMaxSdkVersion="32" pour éviter d'employer un ID utilisateur partagé lors de nouvelles installations d'utilisateurs.

Nom d'un ID utilisateur Linux qui sera partagé avec d'autres applications. Par défaut, Android attribue à chaque application son propre ID utilisateur. Toutefois, lorsque la valeur de cet attribut est identique pour plusieurs applications, celles-ci partagent alors le même ID, à condition que leurs ensembles de certificats soient également identiques. Les applications qui présentent le même ID utilisateur peuvent mutuellement accéder à leurs données et, le cas échéant, s'exécuter dans le même processus.

android:targetSandboxVersion
Sandbox cible à utiliser pour cette application. Plus le numéro de version de la sandbox est élevé, plus le niveau de sécurité est fort. Sa valeur par défaut est 1, mais il est également possible de la définir sur 2. Dans ce cas de figure (attribut réglé sur 2), l'application bascule vers une autre sandbox SELinux.

Les restrictions suivantes s'appliquent aux sandbox de niveau 2 :

  • La valeur par défaut de usesCleartextTraffic dans la fonctionnalité de configuration de sécurité réseau est "false".
  • Le partage d'UID est interdit.

Pour les applis instantanées Android ciblant Android 8.0 (niveau d'API 26) ou une version ultérieure, cet attribut doit être défini sur 2. Vous pouvez définir le niveau de sandbox de la version installée de votre application sur 1, qui correspond au niveau le moins restrictif. Toutefois, votre application ne conservera pas les données de l'appli instantanée dans sa version installée. Vous devez définir la valeur de sandbox de l'application installée sur 2 pour que les données persistent de l'appli instantanée jusqu'à la version installée.

Une fois qu'une application est installée, la valeur de la sandbox cible peut seulement être augmentée. Pour diminuer la valeur de la sandbox cible, vous devez désinstaller l'application, puis la remplacer par une version dont le fichier manifeste contient une valeur inférieure pour cet attribut.

android:sharedUserLabel

Cette constante est obsolète depuis le niveau d'API 29.
Le partage d'ID utilisateur entraîne un comportement non déterministe dans le gestionnaire de packages. Son utilisation est donc vivement déconseillée et pourra être supprimée dans une future version d'Android. Les applications doivent plutôt utiliser des mécanismes de communication appropriés, tels que des services et des fournisseurs de contenu, pour favoriser l'interopérabilité entre les composants partagés. Notez que les applications existantes ne peuvent pas supprimer cette valeur, puisque la migration d'un ID utilisateur partagé n'est pas prise en charge.

Libellé lisible pour l'ID utilisateur partagé. Le libellé doit être défini comme référence à une ressource de chaîne : il ne peut s'agir d'une chaîne brute.

Cet attribut a été introduit au niveau d'API 3. Il n'est pertinent que si l'attribut sharedUserId est également défini.

android:sharedUserMaxSdkVersion

Le partage d'ID utilisateur entraîne un comportement non déterministe dans le gestionnaire de packages. Son utilisation est donc vivement déconseillée et pourra être supprimée dans une future version d'Android. Les applications doivent plutôt utiliser des mécanismes de communication appropriés, tels que des services et des fournisseurs de contenu, pour favoriser l'interopérabilité entre les composants partagés.

Version maximale du SDK dans laquelle le système utilise toujours android:sharedUserId. Si votre application est installée sur un appareil exécutant une version du SDK supérieure à la valeur spécifiée, elle se comporte comme si vous n'aviez jamais défini android:sharedUserId.

Cet attribut a été introduit au niveau d'API 33. Il n'est pertinent que si l'attribut sharedUserId est également défini.

android:versionCode
Numéro de version interne. Cette référence sert uniquement à déterminer si une version est plus actuelle qu'une autre. Plus un chiffre est élevé, plus la version est récente. Il ne s'agit pas du numéro de version affiché pour les utilisateurs, qui est quant à lui défini par l'attribut versionName.

La valeur doit être un entier positif supérieur à 0. Vous pouvez la définir à votre guise, à condition que chaque version successive ait un nombre plus élevé. Il peut s'agir, par exemple, d'un numéro de build. Vous pouvez également convertir un numéro de version au format "x.y" en entier en codant les caractères "x" et "y" séparément dans les 16 bits inférieurs et supérieurs. Vous pouvez aussi tout simplement augmenter ce nombre d'une unité à chaque nouvelle version.

android:versionName
Numéro de version affiché pour les utilisateurs. Cet attribut peut être défini en tant que chaîne brute ou comme référence à une ressource de chaîne. La chaîne n'a nulle autre utilité que de s'afficher pour les utilisateurs. L'attribut versionCode contient le numéro de version significatif utilisé en interne.
android:installLocation
Emplacement d'installation par défaut de l'application.

Les chaînes de mots clés suivantes sont acceptées :

Valeur Description
"internalOnly" L'application ne doit être installée que dans la mémoire de stockage interne de l'appareil. Lorsque cet attribut est défini, l'application ne sera jamais installée sur l'espace de stockage externe. Si le volume de stockage interne est plein, le système n'installe pas l'application. Il s'agit également du comportement par défaut lorsque vous ne définissez pas android:installLocation.
"auto" L'application peut être installée sur le stockage externe, mais le système l'installera par défaut sur le stockage interne. Lorsque l'espace interne est insuffisant, le système installe l'application sur le stockage externe. Une fois l'application installée, l'utilisateur peut la déplacer vers un espace de stockage interne ou externe via les paramètres système.
"preferExternal" Il est préférable d'installer l'application sur un volume de stockage externe (carte SD). Rien ne garantit que le système répondra à votre demande. L'application peut être installée sur le stockage interne si le support externe est indisponible ou saturé. Une fois l'application installée, l'utilisateur peut la déplacer vers un espace de stockage interne ou externe via les paramètres système.

Remarque : Par défaut, votre application sera installée sur le stockage interne et ne pourra pas l'être sur un volume de stockage externe, à moins que vous ne définissiez cet attribut sur "auto" ou "preferExternal".

Lorsqu'une application est installée sur le stockage externe :

  • le fichier .apk est enregistré dans l'espace de stockage externe, mais les données de l'application (p. ex., les bases de données) sont conservées dans la mémoire interne de l'appareil ;
  • le conteneur dans lequel le fichier .apk est enregistré est chiffré à l'aide d'une clé permettant à l'application de fonctionner seulement sur l'appareil qui l'a installée (l'utilisateur ne peut pas transférer la carte SD vers un autre appareil ni accéder aux applications installées dessus). Cependant, vous pouvez utiliser plusieurs cartes SD avec le même appareil ;
  • à la demande de l'utilisateur, l'application peut être déplacée vers le stockage interne.

L'utilisateur peut aussi demander le transfert d'une application depuis l'espace de stockage interne vers le stockage externe. Toutefois, le système n'autorise pas l'utilisateur à déplacer l'application vers un espace de stockage externe si cet attribut est défini sur internalOnly (paramètre par défaut).

Consultez la section Emplacement d'installation de l'application pour en savoir plus sur l'utilisation de cet attribut (y compris sur la façon de maintenir la rétrocompatibilité).

Première apparition : niveau d'API 8.

android:allowUpdateOwnership
La valeur par défaut true permet à un programme d'installation d'activer l'application forcée de la propriété des mises à jour pour ce package via PackageInstaller.SessionParams.setRequestUpdateOwnership(boolean) lors de l'installation initiale. S'il est défini sur false, cet attribut empêche tout programme d'installation de demander la propriété d'une mise à jour pour ce package.

Première apparition : niveau d'API 34.

Première apparition :
Niveau d'API 1 pour tous les attributs, sauf indication contraire dans la description de l'attribut.

voir aussi :
<application>