2015-11-19 2 views
4

en jouant avec Android ART et le fichier de code "natif" .oat/.elf qui est créé lors du processus d'installation de l'application, j'ai remarqué quelque chose d'étrange. Pour ma compréhension, si l'appareil utilise ART (Android> = 5.0), l'application va commencer avec le fichier oat compilé (/ data/dalvik-cache/arm64 /).Android ART - Utilisation du fichier .oat dans/dalvik-cache /?

C'est pourquoi j'ai été un peu surpris en vérifiant les fd d'une application et je n'ai pas trouvé le fichier là-bas. Seul l'apk normal (/data/app//base.apk) est répertorié ici.

Vérifiez cette sortie de mes "ls -l/proc/PID/fd"

enter image description here

donc je pensais que peut-être qu'il est tout simplement pas y figurer. J'ai donc échangé moi-même le fichier oat de cette application en compilant un autre fichier classes.dex avec l'outil dex2oat.

Ainsi, même après avoir modifié le fichier, l'application démarre normalement sans messages ou erreurs étranges (également dans logcat).

Quelle est l'explication pour cela? Quel est le processus détaillé que fait Android lorsque vous démarrez une application sous ART?

J'espère que quelqu'un peut éclaircir ça pour moi. Merci beaucoup.

+0

peut voir que base.odex est mappé en mémoire, si vous imprimez la sortie du fichier 'maps'! – Paschalis

Répondre

3

Sur la base de commentaires @Paschalis, j'ai étudié ici et le fichier d'avoine est en effet mémoire mappée sur les appareils Android 5.0 (émulateur):

a6af4000-a6af9000 r--p 00000000 1f:01 7366 /data/dalvik-cache/x86/[email protected]@[email protected]@classes.dex

Vérifiez via:

cat /proc/<PID>/maps | grep dex

Malheureusement, ce n'est plus vrai pour les appareils Android 6.0 (Nexus 5 & arm-Emulator).

Le fichier odex se trouve dans le dossier /data/app/<APP>/oat/<ARCHITECTURE>/ comme « base.odex`

/data/app/app.app.works-1/oat/arm/base.odex

Je n'ai toujours pas trouvé une référence valable pour cela, il est basé sur des expériences et des observations

vous
+0

merci, gentil, j'ai les mêmes problèmes de fichier .odex, Quand j'ai téléchargé apk après que j'ai eu le crash connecter dans la console de jeu pour ce problème, alors comment le résoudre, –