Pour répondre à vos questions :
-
Je ne connais aucune version d'Android où le Dalvik n'était pas invalidé au démarrage. Peut-être que la version initiale 1.0 avait cela, je ne sais vraiment pas, je suis passé par Eclair, Froyo, Gingerbread, Ice Cream Sandwich. Vous devez regarder dans l'arbre des sources et le rebaser en CupCake ou Donut (1.5 et 1.6 respectivement).
-
La raison détaillée :)
La raison pour laquelle le Effacer le cache doit être utilisé est parce que tous les apks, y compris les apks système, ont une dex Lorsque la ROM est démarrée pour la première fois, le Dalvik d'Android passe en revue chacun de ces apks, en extrait le fichier dex et le place dans le cache. /data/dalvik-cache
accélérant ainsi l'exécution de l'application elle-même.
La plupart des ROMs ont des apks qui sont odex ed, le cache est intégré dans l'apk lui-même comme un fichier externe.
Beaucoup de modérateurs de ROM personnalisées ont ces apks. deodex d, ce qui signifie que le fichier dex est remplacé et reconditionné pour faciliter le thème/modification d'un apk.
Lorsque vous flashez une ROM personnalisée, et que vous n'avez pas effacé le cache, les apk's de la ROM personnalisée la plus récente auront un nom différent. dex et lorsque le Dalvik les parcourt, il voit le fichier dex existant mis en cache dans le répertoire et l'ignore. Lorsque vous exécutez l'application, vous êtes assuré d'une fermeture forcée ou d'un ANR (Application Not Responding).
Vous ne perdez pas de données en soi, si vous utilisez ClockWorkMod Recovery, et Effacer les données est sélectionné, alors oui, tous les paramètres relatifs aux applications sont effacés proprement - regardez dans /data/app
.
Donc vous pouvez Effacer le cache mais pas Effacer les données Ce qui est fait efficacement, c'est d'insérer les nouveaux apks en place, dans lesquels les paramètres sont conservés. C'était un scénario assez commun avec les nightlies CyanogenMod où une ROM instable/testing build est flashée, et les paramètres conservés avec le cache wipe. Le kilométrage variera en fonction des applications téléchargées à partir du marché (les paramètres auraient changé par le changement de version très probablement).
Pour de meilleurs résultats, il serait sage d'effectuer les deux opérations suivantes Effacer les données y Effacer le cache pour garantir l'intégrité et l'absence d'erreurs de programme dans l'application elle-même.
Oui, cela signifie que le temps de démarrage serait plus lent, mais c'est un moment initial. Après cela, le démarrage sera plus rapide. En résumé, le fait d'effacer explicitement le cache via CWM permet d'accélérer le démarrage et de s'assurer qu'il n'y a pas de résidus de la version précédente en place qui pourraient s'incruster (à ce stade, je réalise votre question et, en toute honnêteté, je n'ai pas vu Android ne pas invalider le cache au démarrage lors du flashage d'une nouvelle ROM).
Utilisez la source Luke sérieusement ! :D
frameworks/base/core/java/com/android/internal/os/ZygoteInit.java
est le code de démarrage pour chaque runtime apk. Il interagit avec le code C natif qui se trouve dans le fichier dalvik
qui contient les instructions spécifiques du chipset pour interpréter le bytecode dans l'apk vers le jeu d'instructions natif du CPU. ARMv6 est à peu près une version piratée de ARMv5 (qui était le chipset original dans les anciennes versions d'Android avant Eclair), donc vous ne verrez pas ARMv6 dans la source AOSP de google. CyanogenMod aura cet ARMv6 dans ses sources.