<manifest>

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"] >
    ...
</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 est toujours 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. Il est formaté comme un nom de package complet de style Java pour l'application Android. Ce nom peut contenir des lettres majuscules ou minuscules, 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, car cela aurait pour effet de créer une application. Les utilisateurs de la version précédente 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, ne définissez pas 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 pourrait être supprimée dans une future version d'Android. Utilisez plutôt des mécanismes de communication appropriés, tels que des services et des fournisseurs de contenu, pour faciliter l'interopérabilité entre les composants partagés. Les applications existantes ne peuvent pas supprimer cette valeur, car la migration d'un ID utilisateur partagé n'est pas acceptée. Dans ces applications, ajoutez android:sharedUserMaxSdkVersion="32" pour éviter d'employer un ID utilisateur partagé lors de nouvelles installations d'utilisateurs.

Nom d'un ID utilisateur Linux 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 version ultérieure, cet attribut est défini sur 2. Dans la version installée de votre application, vous pouvez définir le niveau de sandbox le moins restrictif, 1. Dans ce cas, votre application ne conserve pas les données de l'appli instantanée dans la version installée de votre application. Vous devez définir la valeur de sandbox de l'application installée sur 2 pour que les données persistent entre l'application instantanée et 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, désinstallez l'application, puis remplacez-la 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 pourrait être supprimée dans une future version d'Android. Utilisez plutôt des mécanismes de communication appropriés, tels que des services et des fournisseurs de contenu, pour faciliter l'interopérabilité entre les composants partagés. Les applications existantes ne peuvent pas supprimer cette valeur, car la migration d'un ID utilisateur partagé n'est pas acceptée.

Libellé lisible pour l'ID utilisateur partagé. Il est défini comme référence à une ressource de chaîne. Il ne peut pas s'agir d'une chaîne brute.

Cet attribut a été introduit dans le 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 pourrait être supprimée dans une future version d'Android. Utilisez plutôt des mécanismes de communication appropriés, tels que des services et des fournisseurs de contenu, pour faciliter 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, lequel est 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 d'un numéro de build ou vous pouvez 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érieur et supérieur. Vous pouvez également augmenter ce nombre d'une unité à chaque nouvelle version.

android:versionName
Numéro de version présenté aux utilisateurs. Cet attribut est défini en tant que chaîne brute ou en tant que référence à une ressource de chaîne. Cette chaîne n'a pas d'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 s'installe que dans la mémoire de stockage interne de l'appareil. Si cette option est définie, l'application ne s'installe jamais sur un espace de stockage externe, comme une carte SD. Si la mémoire de stockage interne est saturée, le système n'installe pas l'application. Il s'agit du comportement par défaut si vous ne définissez pas android:installLocation.
"auto" L'application peut être installée sur un espace de stockage externe, mais le système l'installe par défaut sur le stockage interne. Si la mémoire de stockage interne est saturée, le système l'installe sur la mémoire de 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 espace de stockage externe. Rien ne garantit que le système respecte cette demande. L'application peut être installée sur la mémoire de 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 est installée sur la mémoire de stockage interne et ne peut pas être installée sur un espace de stockage externe, sauf si vous définissez cet attribut sur "auto" ou "preferExternal".

Lorsqu'une application s'installe sur un espace de stockage externe :

  • Le fichier APK est enregistré dans la mémoire de stockage externe, mais toutes les données de l'application, telles que 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é qui permet à 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 utiliser les applications qui y sont installées. 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 la mémoire de stockage interne.

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

Pour en savoir plus sur l'utilisation de cet attribut, y compris sur sa rétrocompatibilité, consultez la section Emplacement d'installation de l'application.

Première apparition : niveau d'API 8.

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

Voir aussi :
<application>