Situation :
J'ai l'intention d'utiliser une bibliothèque Java et je n'ai qu'un fichier AAR d'un référentiel Maven mais j'ai besoin du fichier JAR .
Histoire de fond:
J'ai essayé de compiler une bibliothèque, mais sa structure Gradle était instable. J'ai donc demandé un fichier jar compilé, et son développeur m'a remis un fichier aar d'un référentiel Maven (le développeur n'a pas pu compiler son propre projet). La configuration de Gradle était un gâchis, elle dépendait de plusieurs bibliothèques et Gradle a levé quelques exceptions.
J'ai essayé de l'utiliser dans mon IDEA IDE, mais il ne pouvait pas le voir. Un projet de bibliothèque devrait pouvoir être compilé dans un fichier jar, non?
Question :
Que dois-je faire pour convertir ce fichier AAR en fichier JAR?
Réponses:
Le fichier AAR se compose d'un fichier JAR et de quelques fichiers de ressources (il s'agit essentiellement d'un fichier zip standard avec une extension de fichier personnalisée). Voici les étapes pour convertir:
la source
.aar est une archive zip standard, la même que celle utilisée dans .jar. Changez simplement l'extension et, en supposant qu'elle n'est pas corrompue ou quoi que ce soit, ça devrait aller.
Si vous en avez besoin, vous pouvez l'extraire sur votre système de fichiers, puis le reconditionner sous forme de fichier jar.
la source
Comme beaucoup d'autres personnes l'ont souligné, extraire simplement le .jar du fichier .aar ne le coupe pas tout à fait car des ressources peuvent manquer.
Voici les étapes qui ont fonctionné pour moi (dans le contexte d'Android, votre kilométrage peut varier si vous avez d'autres fins):
la source
Pour ceux qui veulent le faire automatiquement, j'ai écrit un petit script bash de deux lignes qui fait les deux choses suivantes:
Renomme les classes extraites.jar pour être comme l'aar mais avec une nouvelle extension
C'est tout!
la source
aar=jar+res+manifest+libs
. Laissezrest=res+manifest+libs
, quejar(aar)=aar-rest
.Android Studio (version: 1.3.2) vous permet d'accéder de manière transparente au .jar dans un .aar.
Bonus: il décompile automatiquement les classes!
Suivez simplement ces étapes:
File > New > New Module > Import .JAR/.AAR Package
pour vous importer .aar en tant que moduleAjoutez le module nouvellement créé en tant que dépendance à votre projet principal (pas sûr si nécessaire)
Faites un clic droit sur "classes.jar" comme indiqué dans la capture ci-dessous, et cliquez sur "Afficher dans l'explorateur". Voici votre .jar.
la source
la source
Projets .aar basés sur les ressources
Trouver le fichier classes.jar dans le fichier .aar est assez simple. Cependant, cette approche ne fonctionne pas si le projet .aar a défini des ressources (exemple: R.layout.xyz)
Par conséquent, deaar de CommonsGuy m'a aidé à obtenir un projet compatible ADT valide à partir d'un fichier .aar. Dans mon cas, j'ai converti sous-échantillonnage-échelle-image-vue . Il m'a fallu environ une heure pour configurer ruby sur mon PC.
Une autre approche consiste à utiliser android-maven-plugin pour Eclipse / ADT comme l'écrit CommonsGuy dans son blog .
Une autre approche pourrait être de simplement cloner l'ensemble du projet souhaité en tant que source depuis git et de l'importer en tant que "Projet Android existant"
la source
Si vous utilisez Gradle pour vos builds - il existe un plugin Gradle qui vous permet d'ajouter une dépendance aar à vos modules java | kotlin | scala | ....
https://github.com/stepango/aar2jar
la source