3

私たちのアプリケーションには、マルチデックス機能を備えたグラドルによって構築された apk に 3 つのデックスがあります。

アプリケーションをインストールした後、

  1. メインの dex と 2 番目の dex は同じクラス ローダーによってロードされましたか?

  2. 2 番目 ( classes2.dex ) と 3 番目のロードが完了したかどうかを確認するにはどうすればよいですか? コードで動的にチェックできますか?

  3. または、Android でクラス (または dex ) をロードする手順に関する関連ドキュメントを紹介できますか? 私はこれに精通していません。

ありがとうございました。

4

1 に答える 1

3

私はARTコードを掘り下げていませんが、マルチデックスサポートライブラリがDalvikに対して何をするかをここで読むことができます:

  1. はい。すべての dex のクラスは、同じ によってロードされClassLoaderます。アプリケーションがロードされると、MultiDexインストルメンテーション は次のことを行います。
    • .apk から追加の dex ファイルを抽出し、データ ディレクトリ内の独自の .zip ファイルに配置します (APK と .zip を区別できないようにするためClassLoader)。
    • アプリケーションのコンテキストから を取得し、それらの新しい .zip ファイルを が反射的に認識ClassLoaderしているリストに追加します。ClassLoader

別々の dex が同じ ClassLoader によってロードされるだけでなく、MultiDex なしで使用される同じ ClassLoader によってロードされます。

  1. アプリケーションが読み込まれると、追加のデックスが自動的にセットアップされます。このコード内を確認するのは簡単ではありませんが、デバイスのログを確認することでローカルで確認できます。

  2. ART と Dalvik のアーキテクチャに関する Android ドキュメントがいくつかあります。しかし、ソースを読むことに勝るものはありません:)

于 2015-09-24T09:10:39.610 に答える