android - 如何将 .aar 文件转换为 .jar

标签 android eclipse jar ibm-mobilefirst

要在 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-utilssupport-v4 的 AAR 之一拉进来——除了它的classes.jar之外没有什么重要的我可以看到。

但是,其他 AAR 的内容超出了 JAR。例如,support-compatsupport-media-compat有 AIDL 文件。其他 AAR——例如 appcompat-v7 — 拥有资源或 Assets 。如果您尝试仅使用 AAR 中的 JAR,并尝试使用需要这些资源或 AIDL 文件或任何存在的类,您的应用程序将会崩溃。

您可以尝试将 AAR 转换为旧式 Eclipse 库项目。俗话说,你的里程可能会有所不同。另外,我不知道 IBM MobileFirst 是否支持图书馆项目。

关于android - 如何将 .aar 文件转换为 .jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47359164/

相关文章:

linux - org.eclipse.swt.SWTError : No more handles - after installing ibus 错误

android - 我是否正确安装了 Android NDK?

eclipse - 如何在 Eclipse 中将目录附加到 $PATH?

java - 如何通过 jar 文件更新使用 DCEVM/Hotswap Agent?

java - 在终端中使用 jar 运行 java 代码

android - ClassCastException 安卓工作室

java - Glide : log each request

android - RecyclerView 自动大小列

android - 在 Ionic 4 Android 应用程序中打开键盘会将背景图像向上移动

Java/wsdl/jar 类未找到编译问题