なぜ CLASS を DEX に変換するのですか?
DEX (Dalvik Executable) は ART ランタイム用の Android 独自のバイトコード形式ですが、.class ファイルはデスクトップ Java 用の JVM バイトコードです。これら2つの命令セットは異なり、互換性はありません。実行可能な Android アプリには、単体の .class ファイルには存在しないマニフェスト、リソース、および Android フレームワークへの参照を含む APK が必要です。
CLASS から DEX への変換方法
Android Studio FREE
Android プロジェクトを開始し、Java ソース (.java ファイル) をプロジェクトに追加してビルドします。Android Gradle プラグインがソースをコンパイルし、自動的に d8 を実行して有効な APK を生成します。
JD-GUI OPEN-SOURCE
.class ファイルしか手元にない場合は、まず JD-GUI の File > Save All Sources を使用して .java にデコンパイルします。その後、そのソースを Android Studio プロジェクトに追加してビルドしてください。
これらの形式について
CLASS ファイルはコンパイルされた Java バイトコードであり、javac が .java ソースファイルから生成する出力です。実行するには Java (JDK) がインストールされている必要があり、«java MyClass» コマンドを使用します。コードの内容を確認するには、JD-GUI などのデコンパイラで開きます。CLASS…
.CLASS の詳細を開く →DEX ファイルはコンパイルされた Android アプリのコード、つまり Android のランタイム (ART) が実行する Dalvik Executable です。通常は APK の内部に classes.dex として存在し、単体のファイルとして扱われることは稀です。コードを読み取るには、jadx (無料) を使用して Java にデコンパイルします。.dex を…
.DEX の詳細を開く →品質と注意点
.classファイルはデスクトップ Java Virtual Machine 用の JVM バイトコードです。DEX は Android の ART ランタイム用の異なる命令セットであり、両者に互換性はありません。d8 MyClass.classはエラーなく実行されますが、出力された DEX には APK 構造、マニフェスト、Android フレームワークの参照が欠けているため、Android にインストールすることはできません。- Android Studio は標準の JAR ファイルを依存関係として受け入れます。ビルドシステムは APK 構築時に class から DEX への変換ステップを自動的に処理します。
よくある質問
d8 を直接使って .class を DEX に変換できますか?
CLASS を DEX に変換するオンラインツールはありますか?
.class ではなく JAR を持っています。何か変わりますか?
.class ファイルと同様に JVM バイトコードが含まれています。実行可能な Android アプリを作成するには、依然として Android Studio での完全なビルドが必要です。