La differenza tra Odex e Deodex su Android è molto importante sopratutto quando si parla di Rom. Ecco una spiegazione dettagliata su questi due termini.
Nell’ambito delle custom rom, dei temi personalizzati e dei firmware può capitare di trovarsi davanti gli aggettivi Odexed e Deodexed, senza sapere cosa essi stiano ad indicare.
Per questo andremo adesso a cercare di spiegare, in maniera il più possibile chiara, la differenza tra i due termini. Partiamo dal presupposto che, su Android, le applicazioni (e anche le rom, dal momento che sono formate da tanti apk) sono rappresentate da pacchetti caratterizzati dall’estensione .apk. Essi sono sostanzialmente dei file .zip che racchiudono tutte le informazioni necessarie per eseguire l’applicazione sul dispositivo. L’applicazione viene fatta partire sul dispositivo tramite la macchina virtuale Dalvik JVM, che elabora il file classes.dex (dove è racchiuso il codice Java necessario). Subito dopo, una cache di questo file viene inviata alla Dalvik cache.
La differenza tra i pacchetti (apk) Odexed e Deodexed sta nel tipo di file contenuti al loro interno:
- ODEX
I pacchetti .apk di questo tipo racchiudono al loro interno dei file classes.dex, che vengono precaricati all’avvio del sistema operativo nella Dalvik cache, permettendo così un boot (avvio del dispositivo) in tempi molto rapidi.
Da qui deriva il termine ROM ODEXED, cioè una ROM in cui sono presenti file classes.dex di ogni applicazione. Esaltate per la loro capacità di economizzare spazio, in genere queste rom non sono molto indicate per la personalizzazione grafica, per esempio per quanto riguarda la creazione di temi per l’interfaccia, in quanto non risulta un’operazione di facile realizzazione. Questo perchè i file necessari all’operazione non sono tutti allocati nella stessa posizione, ma una parte di essi sono già stati estratti altrove prima ancora che l’applicazione venga lanciata.
- DEODEX
Nelle applicazioni DEODEXED, invece, il file classes.dex non viene precaricato nella Dalvik cache. Le informazioni contenute nel classes.dex vengono invece accorpate nell’intero file APK dell’applicazione e la Dalvik cache non dovrà eseguire nulla, poichè la cache del file classes.dex le sarà inviata al momento dell’avvio dell’applicazione. In questo modo da una lato si ottiene una riduzione del tempo di avvio del sistema operativo, in quanto non vi sono file da precaricare, ma dall’altro si riscontra anche una leggero ritardo nel lancio dell’applicazione.
Quindi, tramite l’operazione di DEODEXING di una ROM, è possibile eliminare dalla Dalvik cache i file classes.dex delle applicazioni e incorporare tutte le informazioni all’interno del solo file APK. Questo processo di “repackaging” è spesso utilizzato dagli sviluppatori per realizzare delle custom ROM con diversi file APK estrapolati da altre ROM, ed anche per poter applicare con rapidità e semplicità un particolare theming all’interfaccia, dal momento che tutti i file necessari sono raggruppati in un unico posto. Così facendo gli apk possono anche venire modificati successivamente, lasciando inoltre un maggiore spazio dopo l’installazione.
Tramite Deoxing è possibile modificare qualsiasi pacchetto applicativo senza entrare in conflitto con il sistema operativo, che di default funziona memorizzando un file ODEX accanto all’apk di tutte le applicazioni del sistema.
Speriamo che la spiegazione sia stata abbastanza chiara! In caso contrario, lasciateci un commento sotto e vedremo di aiutarvi!