dex |
辞書:電算用語の基礎知識 ファイル形式編 (PFFMT) |
読み:でっくす |
外語:dex: Dalvik Executable |
品詞:名詞 |
|
概要 |
Android SDKにあるdxというツールでjarからapkを作るが、このとき、jar内にあるclassファイルがdexファイルに変換される。
Androidの仮想マシンDalvikはJVMとは異なるため、このようにして変換し、専用の実行形式であるdex(Dalvik Executable)を作成して用いている。
特徴 |
apkやaab |
Androidアプリの配布形式であるapkや、Playストアにアップロードする形式であるaab(Android App Bundle)の中にも含まれている。
従って、中を覗けばclasses.dexなどのファイルがあることが確認できる。
oat |
Android 5.0以降では新仮想マシンARTが正式採用されており、このためdexはそのままでは使われていない。
アプリインストールの際に事前コンパイラー(Ahead-Of-Timeコンパイラー、AOTコンパイラー)によって.oatファイルへと変換(コンパイル)され、それが用いられる。
補足 |
ファイルヘッダー |
dexファイルは、8バイト形式のシグネチャ(マジックナンバー)が存在する。
例えば、"dex" 0x0a "039" 0x00 = { 0x64 0x65 0x78 0x0a 0x30 0x33 0x39 0x00 } のような形式となっている。
アプリをビルドするときのminSdkVersionの違いによって、出力されるdexファイルも変化するものと思われる。
メソッド数の上限とmultidex |
dexファイルに含められるメソッドは無符号16ビットの番号で管理されており、つまり65,536個が上限となる。
これはアプリ自体のメソッドだけでなく、使われているライブラリーなどのメソッドも含めた総計である。つまり、androidxに関する各種、material、billing、gsonといったものや、kotlin-stdlib-jdk7やkotlinx関係など、アプリ開発にはほぼ必須と言えるものをimplementationに追加するだけで、65,536個の上限は簡単に超えていく。従って様々なライブラリーを組み込んだ多機能なアプリでは、比較的簡単に上限を突破する。
この解決方法はdexファイルを複数に分割するmultidexである。Android 5.0(APIレベル 21)以上では仮想マシンARTの正式採用とともに標準でmultidexに対応しており、ビルドの際にも自動的に処理されるため、プログラマーも利用者も何も考える必要はない。
Android 5.0よりも前の環境では、別途multidexライブラリーを導入することで制限の回避が可能である。
リンク |
通信用語の基礎知識検索システム WDIC Explorer Ver 7.04a (27-May-2022) Search System : Copyright © Mirai corporation Dictionary : Copyright © WDIC Creators club |