要在 IBM MobileFirst Platform 项目中使用 Eclipse IDE,我需要将 .aar 文件转换为 .jar。我试图提取 classes.jar 文件,但它实际上是空的,没有类。我的意思是,在 Android SDK 中,extras/android/m2repository/com/android/support/support-v4 库只有 24.1 版本之前的类,从那里开始的所有版本都只有空的类.jar 文件。那么,我可以用这些版本中的类做什么呢?
试图澄清这个话题,这个问题帮助了我:
Android Archive Library (aar) vs standard jar
有人知道将此 Android 存档文件转换为 Java 存档文件的过程吗?
最佳答案
I need to convert an .aar file into a .jar
根据定义,AAR 不是 JAR,也不一定能“转换”成 JAR。
如果 Artifact 作为 AAR 而不是 JAR 分发,那是因为作为 Artifact 一部分的不仅仅是 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
仅仅是传递依赖的容器。您将在 Artifact 旁边的 POM 文件中看到它们的列表。
例如,25.3.1
POM 文件显示了使用 support-v4
时将被拉入的所有 Artifact 在 AAR Artifact 感知 IDE(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。
例如,25.3.1
版本 support-core-utils
— support-v4
的 AAR 之一拉进来——除了它的classes.jar
之外没有什么重要的我可以看到。
但是,其他 AAR 的内容超出了 JAR。例如,support-compat
和 support-media-compat
有 AIDL 文件。其他 AAR——例如 appcompat-v7
— 拥有资源或 Assets 。如果您尝试仅使用 AAR 中的 JAR,并尝试使用需要这些资源或 AIDL 文件或任何存在的类,您的应用程序将会崩溃。
您可以尝试将 AAR 转换为旧式 Eclipse 库项目。俗话说,你的里程可能会有所不同。另外,我不知道 IBM MobileFirst 是否支持图书馆项目。
关于android - 如何将 .aar 文件转换为 .jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47359164/