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

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

Sous Android 14, l’installateur 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 de continuer.

Activer les packages pour mettre à jour la propriété

Pour déclarer qu'un magasin ou un installateur possède un package d'application, incluez la balise update-ownership dans votre 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 mettre à jour la propriété, d'autres magasins ou installateurs privilégiés doivent gérer le propriétaire de la mise à jour et obtenir le consentement de l'utilisateur pour mettre à jour l'application.

Désactiver les packages lors des changements de propriété

Vous pouvez demander à votre magasin ou à votre installateur de retirer un sous-ensemble de packages des modifications apportées par le propriétaire de la mise à jour en fournissant une liste de refus dans l'APK. En incluant un package dans cette liste, aucun magasin ou installateur ne peut demander la propriété de la mise à jour du package.

Pour empêcher les packages de pouvoir être mis à jour par un autre magasin ou installateur :

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

    <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 installateur demande la propriété d'un package sur une liste noire, la propriété ne sera pas accordée et le package est toujours installé mais n'appartient à aucun installateur. De plus, quel que soit le programme d’installation, une application figurant sur une liste refusée ne peut appartenir à personne.

L’ensemble des packages de cette liste peut changer via une mise à jour du programme d’installation APK qui fournit la liste. Toute propriété définie pour un package qui est ensuite introduit dans une liste de refus est effacée lors de la mise à jour du programme d'installation. En tant que telle, les mises à jour ultérieures du package d’application sur la liste de refus ne nécessiteront pas d’interaction de l’utilisateur.

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

Avec Android 14, même si un installateur de magasin ou 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 installateur.

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

Établir la propriété des applications préchargées

Les applications préchargées n'appartiennent généralement pas à un installateur spécifique. Au lieu de cela, les applications préchargées se voient attribuer un nouveau propriétaire à l'aide de la configuration du système, comme indiqué dans Opter pour mettre à jour la propriété .