2017-11-17 3 views
0

Um mit der Eclipse-IDE für ein IBM MobileFirst Platform-Projekt arbeiten zu können, muss ich eine .aar-Datei in eine .jar-Datei konvertieren. Ich habe versucht, die Datei classes.jar zu extrahieren, aber sie ist praktisch leer und enthält keine Klasse. Ich meine, beim Android SDK haben die extras/android/m2repository/com/android/support/support-v4 Bibliotheken nur Klassen bis 24.1 Version, von dort alle Versionen unten, nur die leere classes.jar Datei. Also, was kann ich mit den Klassen in diesen Versionen machen?So konvertieren Sie eine .aar-Datei in eine .jar-Datei

Der Versuch, ein wenig zu diesem Thema zu klären, diese Frage hat mir geholfen:

Android Archive Library (aar) vs standard jar

Irgend jemand kennt einen Prozess diese Android Archiv-Datei in eine Java-Archivdatei zu verwandeln?

Antwort

2

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.

Verwandte Themen