web-dev-qa-db-fra.com

Différence entre AAR, JAR, DEX, APK dans Android

Dans Android systèmes ou environnements de développement, quelles sont les différences entre les fichiers AAR, JAR, DEX et APK? Quel est le but de chacun?

AFAIK, JAR sont comme une collection de fichiers .class (comme en Java).

Les fichiers AAR sont des fichiers JAR + des ressources. Mais quel est son cas d'utilisation? Pour être utilisé pour distribuer des bibliothèques de développement pour Android?

APK semble être similaire à des packages comme .deb ou .rpm. Est-ce le seul moyen d'installer des applications sur Android?

Qu'en est-il des fichiers DEX? Applications compilées ... mais quelle est la différence avec un fichier JAR ou AAR?

De plus, lors de la distribution de fichiers .so (c'est-à-dire de code natif) pour Android, quelle est la meilleure façon de le faire?

21
sapito

JAR (Java Archive)

JAR est un format de fichier de package conçu pour la distribution de l'application Java sur sa plate-forme. Il contient des fichiers de classe compilés Java + d'autres fichiers comme MANIFEST. Fondamentalement, il est juste une archive Zip avec quelques restrictions.

DEX (exécutable Dalvik)

DEX est un format de fichier binaire, il est donc compilé. Nous pourrions dire que le fichier . Dex est pour DVM (Dalvik Virtual Machine) quelque chose comme . Class fichiers pour JVM.

Le format de fichier DEX est vraiment généré à partir de Java CLASS par le compilateur dex de Android SDK. Ce compilateur traduit le bytecode JVM en bytecode DVM et met tous les fichiers de classe en un fichier dex.

APK (package d'application Android)

APK est un format de fichier conçu pour distribuer Android sur sa plate-forme. Il présente quelques similitudes avec le format JAR. Encore une fois, il s'agit simplement d'une archive Zip, mais les fichiers APK ont une structure spécifique prédéfinie. Pour par exemple, il doit toujours contenir un fichier nommé AndroidManifest.xml et bien d'autres encore. Ce package regroupe également les classes compilées au format dex.

AAR

AAR est la distribution binaire d'un projet de bibliothèque Android. Il a une structure similaire à l'APK.

29
hradecek

Les fichiers JAR sont comme une collection de fichiers .class (comme en Java).

C'est parce qu'il est a Java JAR.

Les fichiers AAR sont des fichiers JAR + des ressources

Correct.

Mais quel est son cas d'utilisation? Pour être utilisé pour distribuer des bibliothèques de développement pour Android?

Correct.

APK semble être similaire à des packages comme .deb ou .rpm. Est-ce le seul moyen d'installer des applications sur Android?

De manière générale, oui.

Qu'en est-il des fichiers DEX?

Les fichiers DEX contiennent les sous-codes Dalvik compilés de manière croisée représentant le code d'application. Développeurs écrire Java, mais Android s'exécute Dalvik bytecodes. Dans l'APK, vous trouverez un fichier DEX représentant ces bytecodes.

De plus, lors de la distribution de fichiers .so (c'est-à-dire de code natif) pour Android, quelle est la meilleure façon de le faire?

Je ne sais pas ce que vous entendez par "distribuer".

Si vous voulez dire "distribuer une application", votre .so les fichiers seront dans l'APK.

Si vous voulez dire "distribuer en tant que bibliothèque pour d'autres développeurs", utilisez un AAR ou simplement un projet Android sous forme source.

18
CommonsWare