J'essaie de comprendre le processus d'installation d'un apk sur Android, en particulier l'émulateur SDK Android via l'installation d'Adb (où je teste).
Lors de la recherche, je n'ai trouvé aucune réponse satisfaisante en dehors de "l'apk est simplement copié dans/data/app et est installé lorsque vous l'exécutez. Cela ne me satisfait pas car cela n'explique pas comment l'icône de l'apk apparaît dans le menu entre autres problèmes.
Venant d'un arrière-plan Windows, exécuter un .exe ou un programme d'installation pour installer un programme modifie les registres, les fichiers, les services, etc. J'ai besoin de comprendre si cela ou quelque chose de similaire se produit lorsqu'une apk est installée sur Android.
Donc, si quelqu'un peut m'expliquer ce qui se passe spécifiquement lorsqu'une apk est installée sur Android je l'apprécierais grandement.
Je voudrais également savoir si Dalvik VM "zygote
" est impliqué dans l'installation ou se produit-il au niveau du noyau Linux inférieur?
Mon but ultime ici est d'utiliser strace pour caputer le processus d'installation d'un apk pour documenter les modifications du système, les créations de fichiers, l'activité du réseau et d'autres événements d'intérêt.
Il existe principalement deux catégories d'applications Android.
Voici le processus d'installation étape par étape.
L'analyse XML, l'analyse des ressources et la copie de fichiers .apk sont effectuées par
PackageManageService.Java
cependant, la création du répertoire est effectuée par
installd.c
PackageManageService.Java communique avec installd.c via un socket local, situé dans/dev/socket/installed
Le package dans lequel le fichier .apk a été copié est différent pour les applications système et les applications utilisateur. pour les applications système, il est
/ system/app /
Où, comme pour l'application utilisateur, le fichier .apk copié dans le fichier .apk est copié dans
/ data/app
Le fichier .dex, qui est extrait du fichier .apk, est copié dans/data/dalvik-cache /.
Le gestionnaire de packages crée un répertoire de données/data/data // pour stocker la base de données, les préférences partagées, la bibliothèque native et les données de cache
Tout ce que vous voulez savoir, je pense, se trouve dans le Android http://developer.Android.com/tools/building/index.html et pour comprendre l'empaquetage de l'application elle-même, voici mieux l'image (ce n'est pas le processus d'installation de l'APK, mais cela peut vous aider à comprendre la structure et l'instalation apk). dex est la sous-construction de votre application - contient le Java et les classes compilées. Un fichier dex contient plusieurs classes par opposition à Java fichier de classe qui ne contient que celui-là) fichier .x dex est Java bytecode converti avec l'outil DX qui fait partie intégrante de Android SDK. En conséquence, il permet à chaque application de s'exécuter comme son propre processus avec sa propre instance de la machine virtuelle Dalvik.
Cela se fait à deux niveaux 1.) PackageInstaller (UI) utilisant la commande d'envoi de PackageManagerService (service système) à la 2ème partie (Installd) 2.) Installd est un démon qui installe réellement l'apk. Installd et PackageManagerService communiquent en utilisant la communication par socket. Le socket utilisé est installé lui-même. Vous pouvez vous référer à init.rc pour la création de socket sur init.