Je veux juste connaître toutes les étapes.
Est-ce qu'Android copie simplement le package de l'application vers un autre emplacement ?
Quand on lance l'application, est-ce qu'Android décompresse le package de l'appli à chaque fois ?
Réponse
Trop de publicités?Non, il ne décompresse pas le package à chaque fois. Le dalvik-cache est l'endroit où il stocke le cache des fichiers dex (les fichiers exécutables dalvik).
Je sais que les applications système sont mises en cache lorsque l'appareil est démarré pour la première fois, si le cache n'existe pas. Les applications utilisateur, si je devais deviner, seraient faites lors de l'installation ou du premier lancement.
Une fois en cache, il n'aura pas besoin de mettre à jour ce cache tant que l'application n'est pas mise à jour, c'est pourquoi je pense que cela se produit dans le processus d'installation. Mais il est aussi possible de simplement lire le Manifeste de l'APK et de voir quelle version il est lorsqu'il est lancé. Si la version est différente de celle dans le cache, il pourrait le recacher.
éditer
Je veux développer un peu là-dessus. Je viens de vider mon dalvik-cache et de redémarrer mon appareil. En regardant le logcat de l'appareil via DDMS pendant le démarrage, il montre qu'il fait les applications système et les applications "utilisateurs" au démarrage.
Le PackageManager "collecte" les certificats de l'APK. puis il décompresse l'APK. Le PackageParser stocke toutes les autorisations que l'APK a.
Donc ces étapes sont effectuées lorsque l'appareil démarre (si les APK ont changé depuis le dernier démarrage, ou que le dalvik-cache a été vidé). Mais ce même processus serait accompli lorsque l'APK est installé, puisque le PackageManager & le PackageParser sont ceux qui gèrent le processus.
edit2
Ce n'est pas juste le processus de "démarrage", c'est ce qui se passe lorsque l'application est installée. Le dalvik-cache agit un peu comme l'"enregistrement" de l'application. Mais lors de l'installation, l'application s'inscrit également auprès du système pour tout "récepteur" qu'elle possède. Ceux-ci sont comme les écouteurs pour des actions spécifiques qui se produisent, quel type de liens il gère, des choses comme ça. Il n'y a pas de registre comme le registre de Windows, mais oui, le système d'exploitation garde une trace des applications installées et des actions qui peuvent lancer l'application.