Существует ли универсальный или "толстый" файл класса для Java?

Жирный двоичный файл - это двоичный файл, который может быть запущен на нескольких архитектурах. По сути, он состоит из программы, скомпилированной дважды, один раз для каждой архитектуры, затем записанной в один и тот же файл. Вероятно, наиболее известным примером являются "универсальные" двоичные файлы Apple, позволяющие компилировать программы для архитектур Intel и Power PC и запускать их из одного исполняемого файла.

Это никогда не было проблемой для Java, поскольку Java работает на JVM, что позволяет запускать его с любого компьютера, поддерживаемого JVM. Однако Android сейчас очень популярен, а виртуальная машина Android (Dalvik) не совместима с JVM. Есть ли способ дважды скомпилировать код и создать файл класса, который может быть выполнен как JVM, так и Dalvik? А если нет, возможно ли это?

1 ответ

Решение

Ответ: да.

Вы можете создать универсальный .jar файл, который содержит как JVM-дружественных .class файлы и Android-дружественных classes.dex файл. dx инструмент, включенный в Android SDK, будет испускать такие файлы, если вы используете --keep-classes опция командной строки.

Обратите внимание, что хотя такое .jar Файлы могут использоваться на JVM и на Android, поэтому упаковывать код не очень полезно. Приложения для Android упакованы как .apk файлы включают XML-файл манифеста Android. Они используют специальные API для Android, такие как Activity которые не доступны на JVM.

Универсальный .jar Файл будет в основном полезен, если вы хотите выполнить загрузку классов во время выполнения библиотеки.

Другие вопросы по тегам