Articles

Why Do I Need to Wipe Dalvik Cache?

To answer your questions:

  • Dalvik が起動時に無効にならない Android バージョンがあることを知らないのですが、これは何ですか。 最初のバージョン 1.0 ではそうだったかもしれませんが、Eclair、Froyo、Gingerbread、Ice Cream Sandwich を経て、私は本当に知りません。 あなたは、ソースツリーを調べて、CupCakeまたはDonut(1.5と1.0)に戻ってそれをリベースする必要があります。6)

  • 詳細な理由 🙂

Wipe Cache を使用しなければならない理由は、システムアプリを含むすべてのアプリには dex ファイルが添付されており、ROM を最初に起動したときに Android の Dalvik はそれらのアプリを一つ一つ調べ、そこから dex ファイルを取り出してキャッシュに置き /data/dalvik-cache アプリ自体の実行速度を上げるためです。

ほとんどの ROM は、odex ‘ed された apk を持っており、キャッシュは外部ファイルとして apk 自体にバンドルされています。

多くのカスタム ROM 改良者は、deodex ‘d でこれらの apk を持っており、dex ファイルはテーマや変更を容易にするために置き換えられ再パッケージ化されています。

カスタム ROM をフラッシュし、キャッシュを消去しなかった場合、新しいカスタム ROM の apk には異なる dex ファイルが添付され、Dalvik がそれらを通過するとき、ディレクトリで見つかった既存のキャッシュ dex ファイルを見て、それをスキップし、アプリを実行すると、強制終了または ANR (Application Not Responding) が保証されます。

「キャッシュのワイプ」は可能ですが、「データのワイプ」はできないので、効果的に行われるのは、新しいアプリを所定の位置に配置し、その中で設定を保持することです。 これは、不安定な/テストROMビルドがフラッシュされ、キャッシュワイプで設定が保持されるCyanogenMod nightliesで非常に一般的なシナリオであった。 マーケットからダウンロードしたアプリの内容(バージョンアップで設定が変わっている可能性が高い)により、走行距離は異なります。

最良の結果を得るには、Wipe Data と Wipe Cache の両方を実行して、アプリ自体の整合性とプログラム エラーがないことを確認することが賢明でしょう。

その後、より速く起動するようになります。 本当に一言で言えば、明示的に CWM 経由でキャッシュ自体を消去することは、実際にそれをスピードアップするのに役立ち、また、前のバージョンからの残留物がないことを保証します。 (今この段階では、あなたの質問を理解しているので、すべての公正さのために、新しい ROM をフラッシュするときに起動時にキャッシュ自体の無効化を実行しない Android を実際には見ていません…)

Use the source Luke seriously! 😀

frameworks/base/core/java/com/android/internal/os/ZygoteInit.java is the bootup code for each apk runtime. これは、dalvik ディレクトリ ツリーにあるネイティブ C コードと対話し、apk 内のバイトコードをネイティブ CPU 命令セットに解釈するための特定のチップセット命令を含んでいます。 ARMv6 は ARMv5 (Eclair 以前の古い Android バージョンのオリジナルチップセット) をかなりハックしたバージョンなので、Google からの AOSP ソースで ARMv6 を見ることはできません。 CyanogenMod はその ARMv6 をソースに含んでいます