Situation :
Ich beabsichtige, eine Java-Bibliothek zu verwenden, und ich habe nur eine AAR- Datei aus einem Maven-Repository, aber ich benötige die JAR- Datei.
Hintergrundgeschichte:
Ich habe versucht, eine Bibliothek zu kompilieren, aber ihre Gradle-Struktur war instabil. Also bat ich um eine kompilierte JAR-Datei und der Entwickler gab mir eine AAR-Datei aus einem Maven-Repository (der Entwickler konnte sein eigenes Projekt nicht kompilieren). Die Gradle-Konfiguration war ein Chaos, sie hing von mehreren Bibliotheken ab und Gradle hat einige Ausnahmen ausgelöst.
Ich habe versucht, es in meiner IDEA IDE zu verwenden, aber es konnte es nicht sehen. Ein Bibliotheksprojekt sollte in eine JAR-Datei kompiliert werden können, oder?
Frage :
Was kann ich tun, um diese AAR-Datei in eine JAR-Datei zu konvertieren?
Antworten:
Die AAR- Datei besteht aus einer JAR- Datei und einigen Ressourcendateien (es handelt sich im Grunde genommen um eine Standard-Zip-Datei mit einer benutzerdefinierten Dateierweiterung). Hier sind die Schritte zum Konvertieren:
quelle
.aar ist ein Standard-Zip-Archiv, das auch in .jar verwendet wird. Ändern Sie einfach die Erweiterung und vorausgesetzt, sie ist nicht beschädigt oder so, sollte sie in Ordnung sein.
Bei Bedarf können Sie es in Ihr Dateisystem extrahieren und dann als JAR neu verpacken.
quelle
Wie viele andere Leute bereits betont haben, reicht es nicht aus, die .jar-Datei aus der .aar-Datei zu extrahieren, da möglicherweise Ressourcen fehlen.
Hier sind die Schritte, die für mich funktioniert haben (im Kontext von Android kann Ihr Kilometerstand variieren, wenn Sie andere Zwecke haben):
quelle
Für diejenigen, die es automatisch machen wollen, habe ich ein kleines zweizeiliges Bash-Skript geschrieben, das die nächsten zwei Dinge macht:
Benennt extrahierte classes.jar um, um wie aar zu sein, jedoch mit einer neuen Erweiterung
Das ist es!
quelle
aar=jar+res+manifest+libs
. Lassen Sierest=res+manifest+libs
, alsjar(aar)=aar-rest
.Mit Android Studio (Version: 1.3.2) können Sie nahtlos auf die .jar-Datei in einer .aar-Datei zugreifen.
Bonus: Es dekompiliert automatisch die Klassen!
Befolgen Sie einfach diese Schritte:
File > New > New Module > Import .JAR/.AAR Package
um Sie .aar als Modul zu importierenFügen Sie das neu erstellte Modul als Abhängigkeit zu Ihrem Hauptprojekt hinzu (nicht sicher, ob dies erforderlich ist).
Klicken Sie mit der rechten Maustaste auf "classes.jar" (siehe Abbildung unten) und klicken Sie auf "Im Explorer anzeigen". Hier ist dein .jar.
quelle
quelle
Ressourcenbasierte .aar-Projekte
Das Finden der Datei classes.jar in der Datei .aar ist ziemlich trivial. Dieser Ansatz funktioniert jedoch nicht, wenn das .aar-Projekt einige Ressourcen definiert hat (Beispiel: R.layout.xyz).
Daher hat mir deaar von CommonsGuy geholfen, ein gültiges ADT-freundliches Projekt aus einer .aar-Datei zu erstellen. In meinem Fall habe ich die Subsampling-Scale-Image-Ansicht konvertiert . Ich habe ungefähr eine Stunde gebraucht, um Ruby auf meinem PC einzurichten.
Ein anderer Ansatz ist die Verwendung des Android-Maven-Plugins für Eclipse / ADT, wie CommonsGuy in seinem Blog schreibt .
Ein weiterer Ansatz könnte darin bestehen, das gesamte gewünschte Projekt als Quelle von git zu klonen und als "Vorhandenes Android-Projekt" zu importieren.
quelle
Wenn Sie Gradle für Ihre Builds verwenden, gibt es ein Gradle-Plugin, mit dem Sie Ihren Java | Kotlin | Scala | ... -Modulen eine Abhängigkeit hinzufügen können.
https://github.com/stepango/aar2jar
quelle