Cosa sono odexed/deodexed? - Android dalla A alla Z

Emanuele Cisotti
Emanuele Cisotti Tech Master
Cosa sono odexed/deodexed? - Android dalla A alla Z

Solitamente in una ROM ufficiale ogni apk o jar ha degli omonimi file .odex (per questo si dice che il firmware è odexed) che contengono parti dell'applicazione che vengono precaricate, in modo da accelerare i tempi di boot: la procedura nota come deodexing consiste nel convertire tali file in classes.dex, che saranno poi compressi all'interno dei rispettivi apk o jar.

Un file deodexed (.dex) contiene in pratica la cache usata dalla Dalvik Virtual Machine (nota appunto come Dalvik-cache) per ciascuna app; un file odexed (.odex) è invece una versione ottimizzata dello stesso file .dex ed è memorizzata a fianco dell'APK, in un file separato anziché al suo interno, permettendo così un boot più rapido perché il sistema sa subito quali applicazioni precaricare.

Il deodexing è dunque un po' come rimettere insieme tutti i pezzi dell'applicazione che prima erano invece sparpagliati, consentendo così modificare un'app senza preoccuparsi che questa vada in conflitto con la sua parte .odex caricata altrove: lo scopo principale per cui le custom ROM ricorrono al deodexing è dunque per la personalizzazione (sia grafica che dei contenuti) e l'integrità del firmware stesso; in questo modo è ad esempio possibile supportare i temi di terze parti di cui molte ROM amano adornarsi.

D'altro canto la rimozione dei file .odex rallenterà la costruzione della Dalvik-cache, allungando i tempi di boot; in ogni caso, dato che la cache verrà comunque costruita via via che le applicazioni sono utilizzate, il rallentamento è particolarmente evidente solo la prima volta che una ROM viene avviata dopo il deodexing (oppure ogni volta che la Dalvik-cache viene cancellata manualmente da recovery).