Articles

Warum muss ich den Dalvik Cache löschen?

Um deine Fragen zu beantworten:

  • Ich kenne keine Android Version, bei der das Dalvik beim Booten nicht ungültig gemacht wurde. Vielleicht war das bei der ersten Version 1.0 der Fall, ich weiß es wirklich nicht, ich habe Eclair, Froyo, Gingerbread, Ice Cream Sandwich durchlaufen. Du musst in den Quellcode-Baum schauen und ihn auf CupCake oder Donut zurücksetzen (1.5 bzw. 1.6)

  • Der detaillierte Grund 🙂

Der Grund, warum der Wipe Cache verwendet werden muss, ist, dass alle Apps, einschließlich der System-Apps, eine Dex-Datei haben, die an sie angehängt ist. Wenn das ROM zum ersten Mal hochgefahren wird, geht Androids Dalvik durch jede einzelne dieser Apps und extrahiert die Dex-Datei daraus und legt sie in den Cache /data/dalvik-cache, wodurch die Ausführung der App selbst beschleunigt wird.

Die meisten ROMs haben Apks, die odex ‚ed sind, der Cache ist in der apk selbst als eine externe Datei gebündelt.

Viele Custom ROM Modder haben diese Apks deodex ‚d, was bedeutet, dass die dex Datei ersetzt und neu gepackt wird, um es einfacher zu machen, ein apk zu thematisieren/modifizieren.

Wenn Sie ein Custom ROM flashen und den Cache nicht gelöscht haben, haben die neueren Custom ROM’s apk’s eine andere Dex-Datei angehängt, und wenn das Dalvik durch sie geht, sieht es die vorhandene gecachte Dex-Datei, die im Verzeichnis gefunden wurde, und überspringt sie, dann, wenn Sie die App ausführen, werden Sie garantiert eine Zwangsschließung oder ANR (Application Not Responding).

Sie sind nicht verlieren Daten per se, wenn mit ClockWorkMod Recovery, und Wipe Data ausgewählt ist, dann ja, alle Einstellungen in Bezug auf die apps sind sauber gewischt – schauen Sie in /data/app.

So können Sie Wipe Cache, aber nicht Wipe Data, was effektiv getan wird, ist in den neueren apks an Ort und Stelle, in dem es die Einstellungen beibehalten hat geschoben. Dies war ein recht häufiges Szenario mit CyanogenMod Nightlies, wo eine instabile / Test-ROM-Build geflasht wird, und die Einstellungen mit Cache Wipe beibehalten. Die Laufleistung wird variieren, je nachdem, was apps aus dem Markt heruntergeladen (Einstellungen würde durch Version bump ziemlich wahrscheinlich geändert haben).

Für beste Ergebnisse wäre es ratsam, sowohl Wipe Data als auch Wipe Cache durchzuführen, um die Integrität und keine Programmfehler innerhalb der App selbst sicherzustellen.

Ja, das würde bedeuten, dass die Bootzeit langsamer wäre, aber das ist nur ein einmaliger Moment. Danach würde es schneller booten. Wirklich auf den Punkt gebracht, explizit Wiping der Cache selbst über CWM tatsächlich hilft es zu beschleunigen und sicherzustellen, dass keine Rückstände aus der vorherigen Version an Ort und Stelle, die in munged bekommen könnte (jetzt in diesem Stadium, bin Ihre Frage so in aller Fairness zu realisieren, haben nicht wirklich gesehen, Android nicht die Durchführung der Ungültigmachung des Cache selbst beim Booten beim Flashen einer neuen ROM…)

Nutzen Sie den Quellcode Luke ernsthaft! 😀

frameworks/base/core/java/com/android/internal/os/ZygoteInit.java ist der Bootup-Code für jede apk-Laufzeit. Er interagiert mit dem nativen C-Code, der sich im dalvik-Verzeichnisbaum befindet und spezifische Chipsatz-Anweisungen enthält, um den Bytecode innerhalb der apk in den nativen CPU-Befehlssatz zu interpretieren. ARMv6 ist so ziemlich eine gehackte Version von ARMv5 (das war der ursprüngliche Chipsatz in den älteren Android-Versionen vor Eclair), so werden Sie nicht sehen, ARMv6 in der AOSP-Quelle von Google. CyanogenMod wird, dass ARMv6 in ihrer Quelle haben.