Configurer et gérer la propriété des mises à jour pour les applications

Lorsqu'une application est installée par un magasin ou un programme d'installation, le magasin ou le programme d'installation est considéré comme le "programme d'installation enregistré", c'est-à-dire le dernier programme d'installation de l'application. Avant Android 14, Android permettait à un autre magasin ou programme d'installation d'application de devenir le programme d'installation enregistré et de mettre à jour l'application sans en informer l'utilisateur.

Dans Android 14, le programme d'installation initial d'une application peut se déclarer "propriétaire de la mise à jour" et posséder les mises à jour de l'application. Si un autre programme d'installation tente de mettre à jour l'application, l'utilisateur a la possibilité d'approuver la nouvelle mise à jour avant qu'elle ne soit effectuée.

Activer la propriété des mises à jour pour les packages

Pour déclarer qu'un magasin ou un programme d'installation est propriétaire d'un package d'application, incluez le tag update-ownership dans votre fichier XML sysconfig pour chaque package, comme suit :

<update-ownership package="com.example.application" installer="com.example.installer" />

Dans cet exemple, com.example.application est le package d'application à posséder et com.example.installer est le propriétaire du package. Lorsqu'un package est activé pour la propriété des mises à jour, les autres magasins ou programmes d'installation privilégiés doivent gérer le propriétaire de la mise à jour et obtenir le consentement utilisateur pour mettre à jour l'application.

Désactiver les modifications de propriété pour les packages

Vous pouvez demander à votre magasin ou programme d'installation de désactiver les modifications de propriétaire de mise à jour pour un sous-ensemble de packages en fournissant une liste de refus dans l'APK. En incluant un package dans cette liste, aucun magasin ni programme d'installation ne peut demander la propriété de la mise à jour du package.

Pour désactiver la possibilité de mettre à jour des packages par un autre magasin ou programme d'installation :

  1. Incluez la propriété suivante dans le fichier AndroidManifest.xml du magasin ou du programme d'installation d'origine :

    <application …>
      <property android:name="android.app.PROPERTY_LEGACY_UPDATE_OWNERSHIP_DENYLIST"
                android:resource="@xml/legacyOwnershipDenylist" />
    </application>
    

    Cet exemple fait référence à une liste de refus XML appelée legacyOwnershipDenylist.

  2. Créez une liste de refus en tant que ressource XML brute au format suivant :

    <deny-ownership>com.example.app1</deny-ownership>
    <deny-ownership>com.example.app2</deny-ownership>
    

Si un magasin ou un programme d'installation demande la propriété d'un package figurant sur une liste de refus, la propriété ne sera pas accordée et le package sera toujours installé, mais aucun programme d'installation n'en sera propriétaire. De plus, quel que soit le programme d'installation, une application figurant sur une liste de refus ne peut appartenir à personne.

L'ensemble des packages de cette liste peut être modifié lors d'une mise à jour de l'APK du programme d'installation qui fournit la liste. Toute propriété définie pour un package qui est ensuite introduit dans une liste de refus est effacée lorsque le programme d'installation est mis à jour. Par conséquent, les mises à jour ultérieures du package d'application figurant sur la liste de refus ne nécessitent aucune interaction de l'utilisateur.

Gérer le propriétaire de la mise à jour et obtenir le consentement utilisateur

Avec Android 14, même si un magasin ou un programme d'installation d'application dispose de l'autorisation android.permission.INSTALL_PACKAGES il doit toujours gérer l'état STATUS_PENDING_USER_ACTION s'il souhaite mettre à jour une application dont les mises à jour appartiennent à un autre magasin ou programme d'installation.

L'application exemple InstallAPKSessionApi.java montre également comment gérer STATUS_PENDING_USER_ACTION.

Établir la propriété pour les applications préchargées

Les applications préchargées n'appartiennent généralement pas à un programme d'installation spécifique. Au lieu de cela, un nouveau propriétaire est attribué aux applications préchargées à l'aide de la configuration système, comme indiqué dans Activer la propriété des mises à jour pour les packages.