Зачем конвертировать CLASS в DEX?
DEX (Dalvik Executable) - это формат байт-кода Android для среды выполнения ART, в то время как файлы .class - это байт-код JVM для настольной Java; эти два набора инструкций различны и не взаимозаменяемы. Для запускаемого приложения Android требуется APK с манифестом, ресурсами и ссылками на Android framework, которые автономный файл .class не предоставляет.
Способы конвертации CLASS в DEX
Android Studio FREE
Запустите проект Android, добавьте исходный код Java (файлы .java) в проект и выполните сборку - плагин Android Gradle скомпилирует исходный код и автоматически запустит d8 для создания валидного APK.
JD-GUI OPEN-SOURCE
Если у вас есть только файлы .class, сначала декомпилируйте их в .java, используя File > Save All Sources в JD-GUI, затем добавьте этот исходный код в проект Android Studio и соберите его.
Об этих форматах
Файл CLASS представляет собой скомпилированный байт-код Java - результат работы javac из исходного файла .java. Чтобы запустить его, вам необходимо установить Java (JDK), а затем…
Открыть детали .CLASS →Файл DEX - это скомпилированный код приложения Android, исполняемый файл Dalvik, который запускается средой выполнения Android (ART). Обычно он находится внутри APK под именем classes.dex,…
Открыть детали .DEX →Качество и на что обратить внимание
- Файлы
.class- это байт-код JVM для настольной виртуальной машины Java; DEX - это другой набор инструкций для среды выполнения Android ART - они не взаимозаменяемы. - Команда
d8 MyClass.classвыполняется без ошибок, но в выходном DEX отсутствует структура APK, манифест и ссылки на Android framework, поэтому его нельзя установить на Android. - Android Studio принимает стандартные файлы JAR в качестве зависимостей - система сборки автоматически обрабатывает любой этап class-в-DEX при создании APK.
Часто задаваемые вопросы
Могу ли я использовать d8 напрямую для преобразования .class в DEX?
Существует ли онлайн-инструмент для конвертации CLASS в DEX?
У меня есть JAR, а не .class - это что-то меняет?
.class; для создания работающего приложения Android по-прежнему требуется полная сборка в Android Studio.