Frage Wie man AAR in JAR umwandelt


Lage: 

Ich beabsichtige eine Java Bibliothek zu benutzen und ich habe nur eine AAR Datei aus einem Maven-Repository, aber ich brauche die KRUG Datei.

Hintergrundgeschichte: 

Ich habe versucht, eine Bibliothek zu kompilieren, aber ihre Gradle-Struktur ist instabil. Also habe ich nach der kompilierten JAR-Datei gefragt, und der Entwickler hat eine AAR-Datei aus einem Maven-Repository übergeben (der Entwickler kann sein eigenes Projekt nicht kompilieren). Das Gradle-System war ein Durcheinander, es hing von mehreren Bibliotheken ab, und Gradle hat eine Ausnahme geworfen.

Ich habe versucht, es in meiner IDEE zu verwenden, aber es kann es nicht sehen. Ein Bibliotheksprojekt sollte in eine JAR-Datei kompiliert werden können, oder?

Frage:

Was muss ich tun, um diese AAR-Datei in eine JAR-Datei zu konvertieren? 


76
2018-01-28 21:36


Ursprung


Antworten:


Das AAR Datei besteht aus a KRUG Datei und einige Ressourcendateien (es ist im Grunde eine Standard-Zip-Datei mit einer benutzerdefinierten Dateierweiterung). Hier sind die Schritte zum Konvertieren:

  1. Extrahieren Sie die AAR - Datei mit dem Standard - Zip - Extrakt (benennen Sie sie um in *.Postleitzahl zu erleichtern)
  2. Finde das Klassen.Jar Datei in den extrahierten Dateien
  3. Benennen Sie es um, wie Sie möchten, und verwenden Sie diese JAR-Datei in Ihrem Projekt

112
2018-01-31 16:35



.aar ist ein Standard-Zip-Archiv, das auch in .jar verwendet wird. Ändern Sie einfach die Erweiterung und, vorausgesetzt, es ist nicht beschädigt oder irgendetwas, sollte es in Ordnung sein.

Wenn Sie es benötigen, können Sie es in Ihr Dateisystem extrahieren und es dann als jar neu packen.

1) Rename it to .jar
2) Extract: jar xf filename.jar
3) Repackage: jar cf output.jar input-file(s)

17
2018-01-28 21:46



Viele andere haben darauf hingewiesen, dass das Extrahieren der .jar-Datei aus der .aar-Datei nicht ausreicht, da Ressourcen möglicherweise fehlen.

Hier sind die Schritte, die für mich funktionierte (Kontext von Android, kann Ihre Laufleistung variieren, wenn Sie andere Zwecke haben):

  1. Benennen Sie die .aar-Datei in .zip um und extrahieren Sie sie.
  2. Der extrahierte Ordner ist ein ADT-Projekt, das Sie mit einigen kleineren Änderungen in Eclipse importieren können (siehe unten)!
  3. Benennen Sie die enthaltene Datei im extrahierten Ordner um Klassen.Jar wie auch immer Sie möchten (in diesem Beispiel myProjectLib.jar) und verschieben Sie es in den lib-Ordner innerhalb des extrahierten Ordners.
  4. Damit Eclipse es akzeptiert, müssen Sie zwei Dateien in den extrahierten Ordner root einfügen:
    • .Projekt
    • .classpath
  5. Um dies zu tun, erstellen Sie ein neues Android-Dummy-Projekt in Eclipse und kopieren Sie die Dateien oder kopieren Sie sie von einem bestehenden Android-Projekt.
  6. Öffnen Sie die .project-Datei, suchen Sie nach dem XML-Namens-Tag und ersetzen Sie den Inhalt durch myProjectLib (oder wie Sie Ihre JAR-Datei oben genannt haben) und speichern Sie sie.
  7. Jetzt in Eclipse können Sie Datei -> Neu -> Projekt -> Android Projekt aus existierender Quelle und zeigen Sie auf den Inhalt des extrahierten Ordners.
  8. Nach dem Import klicken Sie mit der rechten Maustaste auf das neu erstellte Projekt, wählen Sie Eigenschaften -> Android, und prüfe Ist Bibliothek?.
  9. In Ihrem Hauptprojekt, für das Sie die Bibliothek verwenden möchten, gehen Sie auch zu Eigenschaften -> Android und füge die neu hinzugefügte myProjectLib der Liste der Abhängigkeiten hinzu.

14
2018-06-10 11:35



Für diejenigen, die es automatisch machen wollen, habe ich ein kleines Zweizeilen-Bash-Skript geschrieben, das die nächsten beiden Dinge erledigt:

  1. Sucht nach allen * .aar-Dateien und extrahiert classs.jar von ihnen
  2. Benennt extrahiertes classes.jar so um, dass es wie das aar aussieht, aber mit einer neuen Erweiterung

    find . -name '*.aar' -exec sh -c 'unzip -d `dirname {}` {} classes.jar' \;
    find . -name '*.aar' -exec sh -c 'mv `dirname {}`/classes.jar `echo {} | sed s/aar/jar/g`' \;
    

Das ist es!


7
2018-03-25 10:03



 The 'aar' bundle is the binary distribution of an Android Library Project. .aar file 
 consists a JAR file and some resource files. You can convert it
 as .jar file using this steps

1) Copy the .aar file in a separate folder and Rename the .aar file to .zip file using 
 any winrar or zip Extractor software.

2) Now you will get a .zip file. Right click on the .zip file and select "Extract files". 
 Will get a folder which contains "classes.jar, resource, manifest, R.java,
 proguard(optional), libs(optional), assets(optional)".

3) Rename the classes.jar file as yourjarfilename.jar and use this in your project.

Hinweis: Wenn Sie nur die .jar-Datei aus Ihrer .aar-Datei abrufen möchten, verwenden Sie die   über dem Weg.       Angenommen, Sie möchten die Datei manifest.xml und Ressourcen mit Ihrer .jar-Datei einschließen       Sie können einfach mit der rechten Maustaste auf Ihre .aar-Datei klicken und sie direkt als .jar-Datei speichern       Speichern Sie es als .zip. Um die heruntergeladene .jar-Datei anzuzeigen, laden Sie sie herunter JD-GUI (Java Decompiler). Ziehen Sie dann Ihre .jar-Datei in den JD_GUI, und Sie können die .class-Datei in lesbaren Formaten wie einer .java-Datei sehen.

enter image description here enter image description here


5
2017-08-14 10:08



Ressourcenbasierte .aar-Projekte

Das Finden der Datei classes.jar in der .aar-Datei ist ziemlich trivial. Dieser Ansatz funktioniert jedoch nicht, wenn das .aar-Projekt einige Ressourcen definiert (Beispiel: R.layout.xyz)

  • Deshalb deaar von CommonsGuy hat mir geholfen einen gültigen zu bekommen ADT-freundliches Projekt aus einer .aar-Datei. In meinem Fall habe ich konvertiert Subsampling-Scale-Bildansicht. Ich brauchte ungefähr eine Stunde, um Ruby auf meinem PC einzurichten.

  • Ein anderer Ansatz ist die Verwendung von Android-Maven-Plugin für Eclipse / ADT wie CommonsGuy schreibt in seinem Blog.

  • Ein weiterer Ansatz könnte sein, nur das gesamte gewünschte Projekt zu klonen als Quelle von git und als "existierendes Android-Projekt" importieren


4
2018-01-06 15:29



Android Studio (Version: 1.3.2) ermöglicht den nahtlosen Zugriff auf die .jar innerhalb eines .aar.

Bonus: Es dekompiliert automatisch die Klassen!

Befolgen Sie einfach diese Schritte:

  1. File > New > New Module > Import .JAR/.AAR Package Importieren Sie .aar als Modul

  2. Fügen Sie das neu erstellte Modul als Abhängigkeit zu Ihrem Hauptprojekt hinzu (bei Bedarf nicht sicher)

  3. Klicken Sie mit der rechten Maustaste auf "classes.jar", wie in der Abbildung unten gezeigt, und klicken Sie auf "Show in explorer". Hier ist dein .jar.

access .jar from .aar


3
2017-09-23 14:20