Articles

Miért kell törölni a Dalvik Cache-t?

Válaszolva a kérdéseidre:

  • Nem tudok olyan Android verzióról, ahol a Dalvik nem lett volna érvénytelenítve bootoláskor. Talán a kezdeti 1.0-s verzióban volt ilyen, tényleg nem tudom, végigmentem Eclair, Froyo, Gingerbread, Ice Cream Sandwich. Meg kell nézni a forrásfát és vissza kell alapozni CupCake-re vagy Donut-ra (1.5 és 1.6 illetve)

  • A részletes ok 🙂

A Wipe Cache-t azért kell használni, mert minden apkhoz, beleértve a rendszer apkokat is, tartozik egy dex fájl, amikor a ROM-ot először bootolod, az Android Dalvik végigmegy minden egyes ilyen apkon, és kiveszi belőle a dex fájlt és elhelyezi a cache-ben /data/dalvik-cache ezzel gyorsítva magát az app végrehajtását.

A legtöbb ROM-nak vannak olyan apkjai, amelyek odex ‘ed, a cache magába az apk-ba van csomagolva, mint egy külső fájl.

A sok egyéni ROM-modder ezeket az apkokat deodex ‘d, azaz a dex fájlt kicserélik és újracsomagolják, hogy könnyebbé tegyék az apk tematizálását/módosítását.

Ha flashelsz egy custom ROM-ot, és nem törlöd a cache-t, az újabb custom ROM-ok apk-jai más dex fájlt csatolnak hozzá, és amikor a Dalvik átnézi őket, látja a meglévő cache dex fájlt, ami a könyvtárban található, és kihagyja, majd amikor futtatod az alkalmazást, garantáltan force close vagy ANR (Application Not Responding) lesz.

Nem veszítesz adatokat önmagában, ha a ClockWorkMod Recovery-t használod, és a Wipe Data van kiválasztva, akkor igen, az appokkal kapcsolatos összes beállítás tisztán törlődik – nézd meg a /data/app-ban.

Szóval lehet Wipe Cache de nem Wipe Data, ami ténylegesen történik, az az újabb apks helyére beillesztve, amiben megmaradnak a beállítások. Ez elég gyakori forgatókönyv volt a CyanogenMod nightliesnél, ahol egy instabil/tesztelő ROM buildet flasheltek, és a beállításokat megtartották a cache wipe-pal. A mérföldkő változik attól függően, hogy milyen alkalmazásokat töltött le a piacról (a beállítások változhattak volna a verzió bump elég valószínű).

A legjobb eredmény érdekében érdemes mind a Wipe Data, mind a Wipe Cache törlést elvégezni, hogy biztosítsuk az integritást, és ne legyenek programhibák magában az alkalmazásban.

Igen, ez azt jelentené, hogy a boot idő lassabb lenne, de a kezdeti egyszeri pillanat. Utána már gyorsabban bootolna. Tényleg dióhéjban, kifejezetten törli a gyorsítótár maga keresztül CWM valóban segít felgyorsítani, és biztosítja, hogy nincs maradvány az előző verzió a helyén, amely lehet kap munged in (Most ebben a szakaszban, vagyok megvalósítása a kérdés, így minden tisztességes, nem láttam ténylegesen Android nem végez a érvénytelenítése a gyorsítótár maga a boot, amikor villog egy új ROM..)

Használd a forrást Luke komolyan! 😀

frameworks/base/core/java/com/android/internal/os/ZygoteInit.java az egyes apk futási idők bootup kódja. Ez kölcsönhatásba lép a dalvik könyvtárfában található natív C kóddal, amely speciális chipset utasításokat tartalmaz, hogy az apk-ban lévő bytecode-ot natív CPU utasításkészletre értelmezze. Az ARMv6 nagyjából az ARMv5 feltört változata (ami az eredeti chipset volt az Eclair előtti régebbi Android verziókban), ezért nem fogod látni az ARMv6-ot a Google AOSP forrásában. CyanogenMod lesz, hogy ARMv6 a forrásukban.