Lorsqu'une application est installée par une plate-forme de téléchargement ou par un installateur, elle est considéré comme le "programmeur d'enregistrement" c'est-à-dire le dernier installation de l'application. Avant Android 14, Android permettait à une autre plate-forme de téléchargement d'applications ou à un autre programme d'installation d'applications de devenir le programme d'installation officiel et 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 installateur est propriétaire d'un package d'application,
Incluez la balise update-ownership
dans votre fichier XML sysconfig
pour chaque package, comme suit :
ce qui suit:
<update-ownership package="com.example.application" installer="com.example.installer" />
Dans cet exemple, com.example.application
est le package d'application qui doit être détenu 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 programme d'installation:
Inclure la propriété suivante dans le magasin ou le programme d'installation d'origine Fichier
AndroidManifest.xml
:<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 programme d'installation demande la propriété d'un package figurant sur une liste de refus, la propriété ne sera pas accordée. Le package sera toujours installé, mais ne sera la propriété d'aucun programme d'installation. De plus, quelle que soit l'application d'installation, une application figurant sur une liste de refus ne peut appartenir à personne.
L’ensemble de packages de cette liste peut changer par une mise à jour du programme d’installation APK qui fournit la liste. Toute propriété définie pour un package introduite ensuite à une liste de blocage est effacée lorsque le programme d'installation mis à jour. Par conséquent, les mises à jour ultérieures du package d'application sur la liste de refus nécessitent une interaction de l'utilisateur.
Gérer le titulaire 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 n'appartiennent généralement pas à 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é.