2 votes

Processus de mise à jour de l'application

Il n'est pas encore clair pour moi ce qui se passe lorsque une application est mise à jour.

La nouvelle application mise à jour est-elle simplement "installée par-dessus" l'ancienne en conservant les données et le cache de l'ancienne? Que se passe-t-il réellement lorsqu'une application est mise à jour?

En effectuant des recherches sur internet1 et sur SE, je n'ai trouvé aucune information utile (Je ne demande pas comment mettre à jour via Google Play).

PS: Dans les commentaires, AndrewT et Firelord m'ont en fait donné des indications utiles et j'ai l'impression que les informations que je cherchais concernent le fonctionnement de PackageManager et PackageInstaller.


1: Voir par ex. "comment les applications Android sont mises à jour", comment fonctionne la mise à jour des applications Android, processus de mise à jour des applications Android expliqué

0 votes

Je ne pense pas que la dernière déclaration soit bien respectée. De nombreuses applications distribuées via Google Play ont d'autres moyens de distribution. Il suffit de penser à 'Monument Valley', que leurs propres développeurs disent être massivement piraté à hauteur de 90%. Si vous le googler, vous trouverez des dizaines de points de distribution. requête Google

0 votes

C'était juste un exemple mais je ne veux pas que le mentionner alourdisse les réponses, donc j'ai édité cette partie. Ma question ne concerne pas Google ou d'autres moyens de distribution, elle se limite au processus de mise à jour propre. Le commentaire de Wbogacz fait référence au fait que j'ai mentionné que "les applications distribuées via GooglePlay ne peuvent être mises à jour que par le biais de GooglePlay selon les politiques des développeurs" dans la question avant que je ne l'édite.

2 votes

pm installer -r FICHIER. Tout ce que cette commande ferait est ce qui se passe techniquement en arrière-plan lors d'une mise à jour de l'application.

4voto

Andy Brudtkuhl Points 1714

Il est important de noter que les applications Android ne s'installent pas de la même manière que sur Windows ou sur les systèmes GNU/Linux. L'application s'exécute entièrement à partir du fichier APK. L'installation d'une application pour la première fois comprend les étapes suivantes :

  1. Télécharger le fichier APK vers le stockage. Tous les fichiers APK des applications sont téléchargés au même emplacement.

  2. Créer un identifiant d'utilisateur pour la nouvelle application. Chaque application sur Android s'exécute sous son propre identifiant d'utilisateur Linux. Cela est fait pour des raisons de sécurité et c'est ainsi que fonctionne le système de permissions.

  3. Créer un répertoire de données pour la nouvelle application. Celui-ci est initialement vide.

  4. Ajouter l'application à la base de données des applications installées sur le téléphone. Cette base de données comprend le nom (identifiant de package) de l'application, le chemin vers le fichier APK, l'identifiant d'utilisateur, entre autres.

C'est tout ce qu'il faut. Donc après cela, il est assez facile de voir comment la mettre à jour :

  1. Télécharger le nouveau fichier APK. Il s'agit d'un nouveau fichier au même emplacement que tous les autres fichiers APK.

  2. Vérifier que l'ancien APK peut être mis à jour vers le nouveau APK. Il vérifie qu'ils ont été tous deux signés par la même clé, pour éviter le vol de données, et que le nouveau APK n'est pas une version plus ancienne, et quelques autres paramètres du fichier manifesto de l'application. Si l'une des vérifications échoue et que l'ancien APK ne peut pas être mis à jour vers le nouveau APK, la mise à jour s'arrête avec une erreur à ce stade.

  3. Arrêter proprement l'ancienne version de l'application.

  4. Vérifier les modifications apportées à l'application (comme de nouvelles permissions) et mettre à jour l'identifiant d'utilisateur de l'application en conséquence. Mettre à jour la base de données des applications installées pour pointer vers le nouveau fichier APK (et avec d'autres données sur la nouvelle application).

  5. Supprimer l'ancien fichier APK.

Le processus de mise à jour n'a même pas besoin de regarder le répertoire de données. C'est à l'application de modifier ses données si la nouvelle version utilise un format différent ou autre. (Cela signifie également que c'est à l'application de décider quelles anciennes versions peuvent être mises à jour proprement sans perdre de données.)

Le processus fonctionne de la même manière que vous mettiez à jour l'application via Google Play, ou une autre boutique d'applications, ou en cliquant sur le fichier APK, ou en utilisant adb install. Peu importe l'interface que vous utilisez, elle passe par le même gestionnaire de packages. La seule différence est que si vous utilisez une boutique d'applications, cela conserve probablement également son propre enregistrement des versions installées, tant pour aider le développeur de l'application à comprendre sa base d'utilisateurs que pour vérifier les futures mises à jour.

0 votes

C'est à l'application de modifier ses données si la nouvelle version utilise un format différent ou autre. Cela signifie-t-il que si j'ai, par exemple, la version 1 et que j'ai l'intention de passer directement à la version 7, la mise à niveau pourrait échouer si les données de la version 1 sont conservées mais qu'il y a eu un changement de format dans la version 3 et que la dernière version n'a pas d'instructions pour modifier le format des données ? Ou toute version après le changement pourra probablement être mise à niveau directement à partir d'une très ancienne version?

3 votes

@ErikvanDoren Cela dépend de l'auteur de l'application. Il est possible que si vous sautez beaucoup de versions, vous puissiez rencontrer un cas que l'auteur n'a pas testé, et l'application ne fonctionnera donc pas correctement à moins de supprimer ses données (ou elle pourrait effacer les données elle-même, si elle est particulièrement mal écrite). J'attendrais cependant de la plupart des auteurs d'applications qu'ils gèrent cela correctement.

0 votes

Détail important manquant : vérification de signature :) Lors de la mise à jour, cela serait l'étape avant d'arrêter l'ancienne version. Si les signatures ne correspondent pas, le processus de mise à jour serait annulé à ce stade.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X