web-dev-qa-db-ja.com

Androidの.dexファイルとは何ですか?

dexファイルに関する質問があります

  • Androidのdexファイルとは何ですか?
  • DexはAndroidでどのように機能しますか?
  • Androidアプリのデバッグでどのように使用されますか?
  • それらはJavaクラスファイルに似ていますか?

具体的な情報が必要な場合は、これを手伝ってください。実際の例は大歓迎です!

165
Nikunj Patel

。dexファイルについて:

Dalvik Virtual Machine(Androidシステムの主力)の最も注目すべき機能の1つは、Javaバイトコードを使用しないことです。代わりに、DEXと呼ばれる自家製の形式が導入され、バイトコード命令でさえJavaバイトコード命令と同じではありません。

Compiled Android application code file.

Androidプログラムは.dex(Dalvik Executable)ファイルにコンパイルされ、デバイス上の単一の.apkファイルに圧縮されます。 .dexファイルは、Javaプログラミング言語で書かれたコンパイル済みアプリケーションを自動的に翻訳することにより作成できます。

Dexファイル形式:

 1. File Header
 2. String Table
 3. Class List
 4. Field Table
 5. Method Table
 6. Class Definition Table
 7. Field List
 8. Method List
 9. Code Header
10. Local Variable List

AndroidにはDalvik Executable Format。dexファイル)に関するドキュメントがあります。詳細については、公式ドキュメントをご覧ください。 Dex File Format

.dexファイルはJavaクラスファイルと似ていますが、古いAndroidバージョンのDalkvik Virtual Machine(DVM)で実行され、インストール時にデバイスでネイティブコードにコンパイルされました。新しいAndroidバージョンのART。

Android-sdkで提供されるdecompileツールを使用して、dexdump .dexを実行できます。

jar fileファイルからJava class fileまたは.dexを作成するためのReverse Engineering Techniquesもあります。

196
user370305
.dex file

コンパイルされたAndroidアプリケーションコードファイル。

Androidプログラムは.dex(Dalvik Executable)ファイルにコンパイルされ、デバイス上の単一の.apkファイルに圧縮されます。 .dexファイルは、Javaプログラミング言語で記述されたコンパイル済みアプリケーションを翻訳することにより、Androidによって自動的に作成できます。

88
Vineet Shukla

dexファイルは、Dalvik VMで実行されるファイルです。

Dalvik VMには、パフォーマンスの最適化、検証、および監視のためのいくつかの機能が含まれており、そのうちの1つはDalvik Executable(DEX)です。

Javaソースコードは、Javaコンパイラによって.classファイルにコンパイルされます。次に、Android SDKの一部であるdx(dexer)ツールが、.classファイルを処理して、Dalvikバイトコードを含むDEXというファイル形式にします。 dxツールは、クラスに存在する冗長な情報をすべて削除します。 DEXでは、アプリケーションのすべてのクラスが1つのファイルにまとめられています。次の表に、JVM jarファイルとdexツールで処理されるファイルのコードサイズの比較を示します。

この表では、システムライブラリ、Webブラウザーアプリケーション、および汎用アプリケーション(目覚まし時計アプリ)のコードサイズを比較しています。すべての場合において、dexツールはコードのサイズを50%以上削減しました。

enter image description here

標準のJava環境では、Javaコードの各クラスは1つの.classファイルになります。つまり、Javaソースコードファイルに1つのパブリッククラスと2つの匿名クラスがある場合、たとえばイベント処理の場合、Javaコンパイラーは合計3つの.classファイルを作成します。

コンパイル手順はAndroidプラットフォームでも同じであるため、複数の.classファイルが作成されます。ただし、.classファイルが生成された後、「dx」ツールを使用して、すべての.classファイルを単一の.dexまたはDalvik実行可能ファイルに変換します。 Dalvik VMで実行されるのは.dexファイルです。 .dexファイルはメモリ使用量に対して最適化されており、設計は主にデータの共有によって駆動されます。

78
Sufiyan Ghori