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 :
-
Télécharger le fichier APK vers le stockage. Tous les fichiers APK des applications sont téléchargés au même emplacement.
-
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.
-
Créer un répertoire de données pour la nouvelle application. Celui-ci est initialement vide.
-
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 :
-
Télécharger le nouveau fichier APK. Il s'agit d'un nouveau fichier au même emplacement que tous les autres fichiers APK.
-
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.
-
Arrêter proprement l'ancienne version de l'application.
-
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).
-
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
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.0 votes
Pouvez-vous fournir un lien vers les politiques des développeurs? Je pense qu'il est conseillé aux développeurs de ne pas mettre à jour leurs applications en dehors du Play Store (par exemple, une mise à jour forcée provenant d'autres sites ... probablement pour des raisons de sécurité), car à ma connaissance, je pourrais mettre à jour n'importe quelle application en utilisant son APK (tant qu'elle utilise le même certificat)
0 votes
@AndrewT. , c'est pour des raisons de sécurité, je n'ai pas de lien direct vers celui-ci mais cela fait référence à cette ligne dans les politiques "Une application téléchargée depuis Google Play ne peut pas modifier, remplacer ou mettre à jour son propre code binaire APK en utilisant une méthode autre que le mécanisme de mise à jour de Google Play". Encore une fois, cela est apparu en raison d'un scénario hypothétique et je l'ai modifié car cela attire des commentaires qui ne sont pas liés à ma question.
3 votes
J'ai trouvé l'article en cherchant cette déclaration, mais peu importe si c'est sans rapport. Je ne suis pas sûr de comment limiter la portée de répondre à cette question : oui, une mise à jour écrasera le "binaire" de l'application (fichier APK) tout en conservant les données/le cache. Cependant, il y a des exigences avant qu'elle puisse être mise à jour, telles que "la version de l'application doit être supérieure/équivalente à celle actuellement installée", "doit utiliser le même certificat", etc. Au-delà de cela, je ne peux pas expliquer les détails.
0 votes
@Izzy, malheureusement, ne sachant pas comment cela fonctionnait, je n'avais aucune idée de la longueur d'une réponse me disant ce dont j'avais besoin aurait été. Maintenant que je suis enfin sur la bonne information, je me rends compte que cela va me prendre assez longtemps pour l'apprendre. À ce stade, je songe à supprimer la question et si je devais poser en programmation, les réponses seraient bien au-delà de ce que je peux comprendre pour l'instant.
0 votes
En réalité, je pense que si une bonne réponse est donnée, cette "page" serait très utile. Si je n'étais pas si occupé actuellement, j'aurais commencé une réponse, mais pour le moment ce serait une réponse très incomplète - et j'aurais besoin de faire des recherches pour étayer mes propos (par exemple, un lien vers des ressources officielles confirmant ce que j'écris). Je ne pense pas que vous devriez le supprimer. Une "reformulation" pourrait être une bonne idée (votre ajout sonne un peu accablant ;) - mais en soi, c'est une bonne question.
0 votes
Je pense que le cœur se trouve dans les lignes entre 10260 à 10350. Il y a également des préparatifs préliminaires effectués au début, mais celui qui est lié est, je crois, le cœur.
0 votes
Soit dit en passant, en sideloading une application déjà existante sur l'un de mes appareils, j'ai reçu un message me demandant si je voulais l'appliquer en tant que mise à jour. Je n'ai jamais vu ce message auparavant ni trouvé ce comportement décrit dans aucun article décrivant comment sideloader une application.
0 votes
@Firelord, merci, je pense que j'aurai besoin de temps pour bien assimiler cela.