Разница между AAR, JAR, DEX, APK в Android

В системах Android или средах разработки, каковы различия между файлами AAR, JAR, DEX и APK? Какова цель каждого из них?

AFAIK, JAR - это как коллекция файлов.class (например, на Java).

AAR - файлы JAR + ресурсы. Но каково его использование? Используется для распространения библиотек разработки для Android?

APK похоже на пакеты, такие как.deb или.rpm. Это единственный способ установить приложения на Android?

Что относительно файлов DEX? Скомпилированные приложения... но какая разница с файлом JAR или AAR?

Moreveor, при распространении файлов.so (т.е. native code) для Android, какой лучший способ это сделать?

Ответ 1

JAR (Архив Java)

JAR - это формат файла пакета, предназначенный для распространения приложения Java на его платформе. Он содержит скомпилированные файлы классов Java + еще несколько файлов, таких как MANIFEST. В основном это просто ZIP-архив с некоторыми ограничениями.

DEX (исполняемый файл Dalvik)

DEX - это формат двоичного файла, поэтому он компилируется. Можно сказать, что файл.dex предназначен для DVM (Dalvik Virtual Machine), что-то вроде файлов.class для JVM.

Формат файла DEX действительно генерируется из java файлов CLASS компилятором dex из Android SDK. Этот компилятор переводит байт-код JVM на байт-код DVM и помещает все файлы классов в один файл dex.

APK (пакет приложений для Android)

APK - это формат файла, предназначенный для распространения приложения Android на его платформе. Он имеет некоторое сходство с форматом JAR. Опять же, просто ZIP-архив, но файлы APK имеют заранее определенную структуру. Например, он всегда должен содержать файл с именем AndroidManifest.xml и многие другие. Также этот пакет объединяет скомпилированные классы в формате dex.

AAR

AAR - это двоичное распределение проекта библиотеки Android. Он имеет аналогичную структуру, как APK.

Ответ 2

JAR - это как коллекция файлов.class (например, на Java).

Это потому, что это Java JAR.

AAR - файлы JAR + ресурсы

Верный.

Но каково его использование? Используется для распространения библиотек разработки для Android?

Верный.

APK похоже на пакеты, такие как.deb или.rpm. Это единственный способ установить приложения на Android?

Вообще-то, да.

Что относительно файлов DEX?

Файлы DEX содержат скомпилированные байт-коды Dalvik, представляющие код приложения. Разработчики пишут Java, но Android запускает байт-коды Dalvik. В APK вы найдете файл DEX, представляющий эти байт-коды.

Moreveor, при распространении файлов.so (т.е. native code) для Android, какой лучший способ это сделать?

Я не знаю, что вы подразумеваете под "распространением".

Если вы имеете в виду "распространение приложения", ваши файлы .so будут в APK.

Если вы имеете в виду "распространение в качестве библиотеки для других разработчиков", используйте AAR или просто проект Android в исходной форме.