Articles

Why Do I Need to Wipe Dalvik Cache?

Aby odpowiedzieć na twoje pytania:

  • Am not aware of any Android version where the Dalvik was not invalidated on boot. Może początkowa wersja 1.0 miała to, naprawdę nie wiem, przeszedłem przez Eclair, Froyo, Gingerbread, Ice Cream Sandwich. Musisz spojrzeć na drzewo źródłowe i rebase go z powrotem do CupCake lub Donut (1.5 i 1.6 odpowiednio)

  • Szczegółowy powód 🙂

Powód dla którego Wipe Cache musi być użyty jest taki, że wszystkie apki, w tym systemowe, mają dołączony plik dex, kiedy ROM jest uruchamiany po raz pierwszy, Android’s Dalvik przechodzi przez każdą z tych apek i wyodrębnia plik dex z niego i umieszcza go w pamięci podręcznej /data/dalvik-cache przyspieszając w ten sposób wykonanie samej aplikacji.

Większość ROMów ma apki, które są odex 'ed, pamięć podręczna jest dołączona do samego apk jako plik zewnętrzny.

Wielu modderów custom ROM miałoby te apki deodex 'd, co oznacza, że plik dex jest zastąpiony i przepakowany, aby ułatwić motywowanie/modyfikowanie apk.

Gdy flashujesz niestandardowy ROM, i nie wymazałeś pamięci podręcznej, nowsze niestandardowe ROM’y apk’s będą miały inny plik dex dołączony do niego, i kiedy Dalvik przechodzi przez nie, widzi istniejący zbuforowany plik dex znaleziony w katalogu, i pomija go, wtedy kiedy uruchamiasz aplikację, masz gwarancję force close lub ANR (Application Not Responding).

Nie tracisz danych per se, jeśli przy użyciu ClockWorkMod Recovery, a Wipe Data jest wybrany, to tak, wszystkie ustawienia odnoszące się do aplikacji są wymazane czysto – spójrz w /data/app.

Więc można Wipe Cache, ale nie Wipe Data, co jest zrobione skutecznie, jest szczelina w nowszych apek w miejscu, w którym ma ustawienia zachowane. To był dość powszechny scenariusz z CyanogenMod nightlies gdzie niestabilne / testowanie ROM build jest błysnął, a ustawienia zachowane z pamięci podręcznej wipe. The mileage will vary depending on what apps downloaded from the market (settings would have changed by version bump quite likely).

Dla najlepszych wyników byłoby mądre, aby wykonać zarówno Wipe Data i Wipe Cache, aby zapewnić integralność i nie ma błędów programu w samej aplikacji.

Tak, że oznaczałoby to, że czas rozruchu byłby wolniejszy, ale jego początkowy raz wyłączyć moment. Po tym czasie bootowanie będzie szybsze. Naprawdę w skrócie, wyraźnie wymazanie samej pamięci podręcznej przez CWM faktycznie pomaga przyspieszyć i zapewnić brak pozostałości z poprzedniej wersji w miejscu, które mogłyby dostać munged w (Teraz na tym etapie, jestem realizując swoje pytanie, więc w całej uczciwości, nie rzeczywiście widziałem Android nie wykonując unieważnienie pamięci podręcznej się na boot podczas flashowania nowego ROM…)

Użyj źródła Luke poważnie! 😀

frameworks/base/core/java/com/android/internal/os/ZygoteInit.java jest kodem rozruchowym dla każdego apk runtime. Współdziała on z natywnym kodem C znajdującym się w drzewie katalogów dalvik, który zawiera specyficzne instrukcje chipsetu do interpretacji kodu bajtowego w apk na natywny zestaw instrukcji procesora. ARMv6 jest dość mocno zhakowaną wersją ARMv5 (który był oryginalnym chipsetem w starszych wersjach Androida przed Eclair), więc nie zobaczysz ARMv6 w źródle AOSP od google. CyanogenMod będzie miał, że ARMv6 w ich source.

.