Format des fichiers Android

Dans le process de construction d’un APK, le code java est transformé en bytecode Dalvik qui est interprété par la machine virtuelle Java. La machine virtuelle Android est différente de la JVM d’Oracle, elle utilise notamment des registres (et pas une base de pile). Le code dalvik est stocké dans un fichier DEX.

Voir : https://source.android.com/devices/tech/dalvik/dex-format

Pendant l’installation de l’APK, le système réalise des optimisation sur le fichier dex pour améliorer la performance de l’execution. Pour optimiser l’exécution le bytecode du fichier DEX est transformé en ODEX (le DEX original est stocké dans un fichier VDEX).

alt

Si on regarde le contenu des apk d’une ROM on ne retrouve pas forcement de fichiers DEX à l’intérieur. Par contre, en regardant l’arborescence on retrouve le fichier odex :

priv-app/SecTelephonyProvider
├── SecTelephonyProvider.apk
└── oat
    └── arm64
        ├── SecTelephonyProvider.odex
        └── SecTelephonyProvider.vdex

2 directories, 3 files

Related