Ich brauche eine .aar-Datei in eine .jar
Per Definition zu konvertieren, ein AAR ist kein JAR und kann nicht unbedingt sein „umgewandelt“ in eine JAR.
Wenn das Artefakt als AAR anstelle von JAR verteilt wird, liegt das häufig daran, dass mehr als nur Java-Code Teil des Artefakts ist.
Ich meine, auf dem Android SDK, die Extras/android/m2repository/com/android/support/Support-v4 Bibliotheken haben nur Klassen bis 24,1 Version
Richtig. Seitdem ist support-v4
lediglich ein Container für transitive Abhängigkeiten. Sie sehen eine Liste von ihnen in der POM-Datei neben dem Artefakt.
Zum Beispiel kann die 25.3.1
POM-Datei zeigt alle Artefakte, die in Mitleidenschaft gezogen werden, wenn Sie support-v4
in einem AAR-Artefakt-aware IDE (Android Studio, IntelliJ IDEA, etc.):
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>com.android.support</groupId>
<artifactId>support-v4</artifactId>
<version>25.3.1</version>
<packaging>aar</packaging>
<dependencies>
<dependency>
<groupId>com.android.support</groupId>
<artifactId>support-compat</artifactId>
<version>25.3.1</version>
<type>aar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.android.support</groupId>
<artifactId>support-media-compat</artifactId>
<version>25.3.1</version>
<type>aar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.android.support</groupId>
<artifactId>support-core-utils</artifactId>
<version>25.3.1</version>
<type>aar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.android.support</groupId>
<artifactId>support-core-ui</artifactId>
<version>25.3.1</version>
<type>aar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.android.support</groupId>
<artifactId>support-fragment</artifactId>
<version>25.3.1</version>
<type>aar</type>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
Wie Sie aus den <type>
Elementen sehen können, sind die meisten dieser transitiven Abhängigkeiten selbst AARs.
Manchmal enthält der AAR nicht viel anderes als ein JAR. Zum Beispiel die Ausgabe von support-core-utils
— einer der AARs, die support-v4
zieht — hat nichts anderes als seine classes.jar
Bedeutung, die ich sehen kann.
Jedoch haben andere AARs Dinge jenseits der JAR. Zum Beispiel haben support-compat
und support-media-compat
AIDL-Dateien. Andere AARs — wie appcompat-v7
— haben Ressourcen oder Vermögenswerte. Wenn Sie versuchen, das JAR nur aus dem AAR zu verwenden, und Sie versuchen, eine Klasse zu verwenden, die diese Ressourcen oder AIDL-Dateien oder Ähnliches erwartet, wird Ihre App abstürzen.
Sie können versuchen, ein AAR in ein Eclipse-Bibliotheksprojekt im alten Stil zu konvertieren. Wie das Sprichwort sagt, kann Ihre Laufleistung variieren. Außerdem habe ich keine Ahnung, ob IBM MobileFirst Bibliotheksprojekte unterstützt.