Articles

Why Do I Need to Wipe Dalvik Cache?

Om je vragen te beantwoorden:

  • Ben me niet bewust van enige Android-versie waar de Dalvik niet ongeldig werd gemaakt bij het opstarten. Misschien dat de eerste versie 1.0 dat had, ik weet het echt niet, heb Eclair, Froyo, Gingerbread, Ice Cream Sandwich doorlopen. Je moet in de broncodeboom kijken en teruggaan naar CupCake of Donut (respectievelijk 1.5 en 1.6 respectievelijk)

  • De gedetailleerde reden 🙂

De reden waarom de Wipe Cache moet worden gebruikt is omdat alle apks, inclusief systeem apks, een dex bestand hebben. Wanneer de ROM voor de eerste keer wordt opgestart, gaat Android’s Dalvik door elk van deze apks heen, haalt het dex bestand eruit en plaatst het in de cache /data/dalvik-cache waardoor de uitvoering van de app zelf wordt versneld.

De meeste ROM’s hebben apks die odex ‘ed zijn, de cache is gebundeld in de apk zelf als een extern bestand.

Veel custom ROM modders zouden die apks deodex ‘d hebben, wat betekent dat het dex-bestand wordt vervangen en opnieuw verpakt om het gemakkelijker te maken om een apk te thematiseren/modificeren.

Wanneer je een custom ROM flasht, en de cache niet hebt gewist, zullen de nieuwere custom ROM’s apk’s een ander dex bestand hebben, en wanneer de Dalvik ze doorzoekt, ziet het het bestaande cache dex bestand in de directory, en slaat het over, en wanneer je dan de app start, ben je gegarandeerd van een force close of ANR (Application Not Responding).

U bent niet het verliezen van gegevens per se, als het gebruik van ClockWorkMod Recovery, en Wipe Data is geselecteerd, dan ja, alle instellingen met betrekking tot de apps worden schoongeveegd – kijk in /data/app.

Dus u kunt Cache Wipe maar niet Wipe Data, wat effectief wordt gedaan, is gleuf in de nieuwere apks in de plaats, waarin het heeft de instellingen behouden. Dit was een veel voorkomend scenario met CyanogenMod nightlies waar een onstabiele/test ROM build is geflashed, en de instellingen zijn behouden met cache wipe. De mijlpaal zal variëren afhankelijk van welke apps gedownload van de markt (instellingen zouden zijn veranderd door versie bump heel waarschijnlijk).

Voor de beste resultaten zou het verstandig zijn om zowel Wipe Data en Wipe Cache uit te voeren om de integriteit te waarborgen en geen programma fouten binnen de app zelf.

Ja, dat zou betekenen dat de opstarttijd langzamer zou zijn, maar dat is het eerste moment. Daarna zou het sneller opstarten. Echt in een notendop, expliciet vegen van de cache zelf via CWM daadwerkelijk helpt versnellen en ervoor te zorgen geen residu van de vorige versie op zijn plaats die zou kunnen krijgen vermalen in (Nu in dit stadium, ben het realiseren van uw vraag dus in alle eerlijkheid, heb niet echt gezien Android niet het uitvoeren van de ongeldigmaking van de cache zelf bij het opstarten bij het flashen van een nieuwe ROM ..)

Gebruik de bron Luke serieus! 😀

frameworks/base/core/java/com/android/internal/os/ZygoteInit.java is de bootup code voor elke apk runtime. Het interageert met de native C code die te vinden is in de dalvik directory tree die specifieke chipset instructies bevat om de bytecode in de apk te interpreteren naar de native CPU instructieset. ARMv6 is zo’n beetje een gehackte versie van ARMv5 (wat de originele chipset was in de oudere Android versies voor Eclair), dus je zult ARMv6 niet zien in de AOSP broncode van Google. CyanogenMod zal die ARMv6 in hun broncode hebben.