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

时间:2017-11-17 20:57:50

标签: android eclipse jar ibm-mobilefirst

要使用Eclipse IDE进行IBM MobileFirst Platform项目,我需要将.aar文件转换为.jar。我试图提取classes.jar文件,但它实际上是空的,没有类。我的意思是,在Android SDK中, extras / android / m2repository / com / android / support / support-v4 库只有24.1版本的类,从那里下面的所有版本,只有空classes.jar文件。那么,我可以对这些版本中的类做些什么呢?

试着澄清一下这个话题,这个问题帮助了我:

Android Archive Library (aar) vs standard jar

有人知道将此Android档案文件转换为Java档案文件的过程吗?

1 个答案:

答案 0 :(得分:2)

  

我需要将.aar文件转换为.jar

根据定义,AAR不是JAR,不一定是"转换"进入JAR。

通常,如果工件是作为AAR而不是JAR分发的,那是因为不仅仅是Java代码是工件的一部分。

  

我的意思是,在Android SDK中,extras / android / m2repository / com / android / support / support-v4库只有24.1版之前的类

正确。从那时起,support-v4仅仅是传递依赖的容器。您将在与工件相邻的POM文件中看到它们的列表。

例如,25.3.1 POM文件显示了在AAR-artifact-aware IDE(Android Studio,IntelliJ IDEA等)中使用support-v4时将引入的所有工件。 :

<?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 - classes.jar拉入的AAR之一 - 除了我可以看到的support-compat之外没有任何重要意义。

然而,其他AAR有JAR以外的东西。例如,support-media-compatappcompat-v7包含AIDL文件。其他AAR(例如[ssl:warn] [pid 6880:tid 288] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name [Fri Nov 17 22:05:26.009909 2017] [ssl:warn] [pid 6880:tid 288] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name [Fri Nov 17 22:05:26.033911 2017] [mpm_winnt:notice] [pid 6880:tid 288] AH00455: Apache/2.4.29 (Win32) OpenSSL/1.0.2l PHP/7.1.11 configured -- resuming normal operations [Fri Nov 17 22:05:26.033911 2017] [mpm_winnt:notice] [pid 6880:tid 288] AH00456: Apache Lounge VC14 Server built: Oct 22 2017 11:52:30 [Fri Nov 17 22:05:26.033911 2017] [core:notice] [pid 6880:tid 288] AH00094: Command line: 'C:\\xampp\\apache\\bin\\httpd.exe -d C:/xampp/apache' [Fri Nov 17 22:05:26.034911 2017] [mpm_winnt:notice] [pid 6880:tid 288] AH00418: Parent: Created child process 544 [Fri Nov 17 22:05:26.046911 2017] [:crit] [pid 544] (-2146173818)Unknown error: AH00141: Could not initialize random number generator [Fri Nov 17 22:05:26.048911 2017] [mpm_winnt:crit] [pid 6880:tid 288] AH00419: master_main: create child process failed. Exiting. )拥有资源或资产。如果您尝试仅使用AAR中的JAR,并尝试使用期望这些资源或AIDL文件或其他任何存在的类,则您的应用程序将崩溃。

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