Lorsqu'une application est installée par une plate-forme de téléchargement ou un programme d'installation, la plate-forme de téléchargement ou le programme d'installation est considéré comme l'installateur enregistré, c'est-à-dire le dernier installateur de l'application. Avant Android 14, Android permettait à une autre plate-forme de téléchargement ou à un autre programme d'installation d'application de devenir l'installateur enregistré et de mettre à jour l'application sans en avertir l'utilisateur.
Sous 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 les packages pour modifier la propriété
Pour déclarer qu'une plate-forme de téléchargement ou un programme d'installation est propriétaire d'un package d'application, incluez la balise 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é de la mise à jour, d'autres plates-formes de téléchargement ou programmes d'installation 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 modifications de propriété pour les packages
Vous pouvez demander à votre plate-forme de téléchargement ou à votre programme d'installation d'exclure un sous-ensemble de packages des modifications de propriétaire de mise à jour en fournissant une liste de blocage dans l'APK. En incluant un package dans cette liste, aucun magasin ni aucun programme d'installation ne peut demander la propriété d'une mise à jour pour le package.
Pour empêcher la mise à jour de packages par un autre magasin ou un autre programme d'installation:
Incluez la propriété suivante dans le fichier
AndroidManifest.xml
du magasin ou de l'installateur 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 blocage XML appelée
legacyOwnershipDenylist
.Créez une liste de blocage 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 à devenir propriétaire d'un package figurant sur une liste de blocage, la propriété ne sera pas accordée et le package sera toujours installé, mais n'appartenir à aucun programme d'installation. De plus, quelle que soit l'application installée, une application figurant sur une liste de refus ne peut être détenue par personne.
L'ensemble des packages de cette liste peut changer via une mise à jour de l'APK d'installation qui fournit la liste. Toute propriété définie pour un package qui est ensuite ajouté à une liste de blocage est effacée lors de la mise à jour du programme d'installation. Par conséquent, les mises à jour ultérieures du package d'application figurant sur la liste de refus ne nécessiteront aucune 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 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 sont détenues par un autre magasin ou un autre programme d'installation.
L'application exemple InstallAPKSessionApi.java
montre également comment gérer STATUS_PENDING_USER_ACTION
.
Définir la propriété des applications préchargées
Les applications préchargées ne sont généralement pas la propriété d'un programme d'installation spécifique. À la place, un nouveau propriétaire est attribué aux applications préchargées à l'aide de la configuration système, comme indiqué dans la section Activer les packages pour mettre à jour la propriété.