如何将 .aar 文件转换为 .jar
How to convert an .aar file into a .jar
要在 IBM MobileFirst Platform 项目中使用 Eclipse IDE,我需要将 .aar 文件转换为 .jar。我试图提取 classes.jar 文件,但它实际上是空的,有 none class。我的意思是,在 Android SDK 中,extras/android/m2repository/com/android/support/support-v4 库只有 classes 直到 24.1 版本,从那里开始的所有版本都只有空 classes.jar 文件。那么,我可以用这些版本中的 classes 做什么呢?
试图澄清这个话题,这个问题帮助了我:
Android Archive Library (aar) vs standard jar
有人知道将此 Android 存档文件转换为 Java 存档文件的过程吗?
I need to convert an .aar file into a .jar
根据定义,AAR 不是 JAR,不一定 "converted" 到 JAR 中。
通常,如果工件作为 AAR 而不是 JAR 分发,那是因为作为工件一部分的不仅仅是 Java 代码。
I mean, at the Android SDK, the extras/android/m2repository/com/android/support/support-v4 libraries only have classes until 24.1 version
正确。从那时起,support-v4
只是一个传递依赖的容器。您将在工件旁边的 POM 文件中看到它们的列表。
例如,25.3.1
POM 文件显示了当您在 AAR 工件感知 IDE 中使用 support-v4
时将被拉入的所有工件(Android Studio、IntelliJ IDEA 等):
<?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>
正如您从 <type>
元素中看到的那样,大多数传递依赖本身就是 AAR。
有时,AAR 除了 JAR 之外不包含其他内容。
例如,support-core-utils
的 25.3.1
版本——support-v4
引入的 AAR 之一——除了我能看到的 classes.jar
之外没有什么重要的。
但是,其他 AAR 包含 JAR 之外的内容。例如,support-compat
和 support-media-compat
有 AIDL 文件。其他 AAR——比如 appcompat-v7
——有资源或资产。如果您尝试仅使用 AAR 中的 JAR,并尝试使用需要这些资源或 AIDL 文件或任何存在的 class,您的应用程序将会崩溃。
您可以尝试将 AAR 转换为旧式 Eclipse 库项目。俗话说,你的里程可能会有所不同。另外,我不知道 IBM MobileFirst 是否支持图书馆项目。
要在 IBM MobileFirst Platform 项目中使用 Eclipse IDE,我需要将 .aar 文件转换为 .jar。我试图提取 classes.jar 文件,但它实际上是空的,有 none class。我的意思是,在 Android SDK 中,extras/android/m2repository/com/android/support/support-v4 库只有 classes 直到 24.1 版本,从那里开始的所有版本都只有空 classes.jar 文件。那么,我可以用这些版本中的 classes 做什么呢?
试图澄清这个话题,这个问题帮助了我:
Android Archive Library (aar) vs standard jar
有人知道将此 Android 存档文件转换为 Java 存档文件的过程吗?
I need to convert an .aar file into a .jar
根据定义,AAR 不是 JAR,不一定 "converted" 到 JAR 中。
通常,如果工件作为 AAR 而不是 JAR 分发,那是因为作为工件一部分的不仅仅是 Java 代码。
I mean, at the Android SDK, the extras/android/m2repository/com/android/support/support-v4 libraries only have classes until 24.1 version
正确。从那时起,support-v4
只是一个传递依赖的容器。您将在工件旁边的 POM 文件中看到它们的列表。
例如,25.3.1
POM 文件显示了当您在 AAR 工件感知 IDE 中使用 support-v4
时将被拉入的所有工件(Android Studio、IntelliJ IDEA 等):
<?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>
正如您从 <type>
元素中看到的那样,大多数传递依赖本身就是 AAR。
有时,AAR 除了 JAR 之外不包含其他内容。
例如,support-core-utils
的 25.3.1
版本——support-v4
引入的 AAR 之一——除了我能看到的 classes.jar
之外没有什么重要的。
但是,其他 AAR 包含 JAR 之外的内容。例如,support-compat
和 support-media-compat
有 AIDL 文件。其他 AAR——比如 appcompat-v7
——有资源或资产。如果您尝试仅使用 AAR 中的 JAR,并尝试使用需要这些资源或 AIDL 文件或任何存在的 class,您的应用程序将会崩溃。
您可以尝试将 AAR 转换为旧式 Eclipse 库项目。俗话说,你的里程可能会有所不同。另外,我不知道 IBM MobileFirst 是否支持图书馆项目。