如何在Eclipse中使用Maven导入Android AAR依赖项?

5
注意:我正在使用 Maven 3.2.2 和 Eclipse Luna。
这是我的 pom.xml 中使用 Android AAR 存档的依赖项。
<dependency>
    <groupId>com.github.gabrielemariotti.cards</groupId>
    <artifactId>library</artifactId>
    <version>1.7.3</version>
    <type>aar</type>
</dependency>

我可以看到目标文件夹中安装的类。

但是,当我尝试在AAR中使用这些类时,Eclipse显示无法解析类。我在pom.xml中添加JAR依赖项时没有任何问题。

如有帮助,不胜感激。


你是否在Eclipse之外编辑过pom.xml文件?如果是,你是否已经尝试使用Project -> Clean...? - marcello
是的,我已经尝试过项目 -> 清理。 - Jag
只是为了有更多线索:1. 你是否在使用 M2E?2. 你能否在 Package Explorer -> Properties -> Java Build Path -> Libraries -> Maven Dependencies 中看到 AAR?3. 当你说“Eclipse 显示类无法解析”时,你的意思是自动补全没有显示你的类吗? - marcello
@marcello 是的,我正在使用M2E,AAR在Maven依赖项中没有出现,是的,我的意思是eclipse自动完成不显示要导入的类。我还检查了我的maven本地存储库/.m2。它已经安装了AAR在/.m2/repository/com/github/gabrielemariotti/cards/library/1.7.3。 - Jag
3个回答

6

2
谢谢信息。这是一个很好的插件。希望能尽快添加对AAR的支持。=) - Jag
1
他们本应该在几年前就添加这个功能...所以我猜他们不会再添加了 :( - TacB0sS
“they” 指的是谁? - Ricardo Gladwell
1
他们什么时候会修复这个问题啊? - Pacerier
我也遇到了同样的问题。试图在Eclipse中使用AAR。由于我熟悉上面链接中@RicardoGladwell的答案,所以我并不指望它能在Eclipse中工作。然而,我也发现该项目没有通过Maven(使用mvn clean install)构建。我看到了像“无法找到符号”之类的错误。我认为mvn应该可以工作,因为Maven Android插件正式支持aar。http://simpligility.github.io/android-maven-plugin/aar.html - Ika

0

经过一些在线研究,似乎没有简单明了的方法来完成这个任务。AAR不是标准格式,也不受Eclipse支持。需要进行一些技巧性操作才能使其正常工作。以下是三种选项,具有不同的经验水平:

Android SDK自带标准Android库的源代码,位于$ANDROID_HOME/extras/android/support。如果你能获取到第三方库的源代码,也可以使用它。将该库作为一个单独的项目导入到你的工作区,并设置其属性以将其标识为Android库。然后,在项目属性的Android部分中添加库引用。这不会影响Eclipse之外的任何地方(例如,它不会影响Maven命令行构建),但它将允许Eclipse解析对该库的引用。我已经成功地为一些v7支持库做到了这一点。
AAR实际上是一个zip文件,其中包含一个classes.jar和一堆Android特定的资源,所有这些资源都是Eclipse可以处理的格式。如果你至少构建过一次该库,请从M2缓存(~/.m2/repository)中获取它。将AAR解压缩到你选择的目录中(只要你打算继续构建该库,就需要保留它)。将classes.jar添加到项目的类路径中。这应该可以让Eclipse解析任何Java引用,但不能解析Android特定的引用(如样式)。
结合上述两种方法,你还可以尝试将未压缩的AAR作为项目导入并添加到你的项目中。这应该可以让Eclipse不仅解析Java引用,还可以解析Android特定的引用。你需要对此进行一些实验,因为该项目没有Java源代码,而是需要包含在构建路径中的JAR文件。

-1

你可以尝试使用我的Maven插件https://bitbucket.org/komo81/eclipse-aar-maven-plugin

该插件为Android AAR依赖项生成Eclipse项目,以便在Eclipse中轻松导入。它与https://github.com/simpligility/android-maven-plugin一起工作,后者将Android AAR依赖项解压缩到/target/unpacked-libs目录中。此插件获取这些已解压的依赖项并对其进行修改,以便在ADT插件的Eclipse中轻松导入。因此,在执行“generate”目标期间,插件会进行以下更改:

  • 将AAR项目目录从输入目录复制到输出目录
  • 将/classes.jar移动到/libs/project_name.jar
  • 将/jni目录移动到/libs
  • 创建.project、.classpath、.settings/org.eclipse.jdt.core.prefs和project.properties文件
  • 创建/gen目录
  • 向根project.properties文件添加引用

用法

将插件添加到您的pom.xml中

<build>
  <plugins>
    <plugin>
      <groupId>org.bitbucket.komo81</groupId>
      <artifactId>eclipse-aar-maven-plugin</artifactId>
      <version>1.0.0</version>
      <executions>
        <execution>
          <goals>
            <goal>clean</goal>
            <goal>generate</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>
<pluginRepositories>
    <pluginRepository>
        <id>dropbox</id>
        <url>https://dl.dropboxusercontent.com/u/52711537/maven-repo/</url>
    </pluginRepository>
</pluginRepositories>

运行mvn compile。通过“导入 -> 导入现有项目到工作区”将生成的项目从/eclipse-aar目录导入Eclipse。

插件目标文档

http://komo81.bitbucket.org/eclipse-aar-maven-plugin/plugin-info.html


通常,指向工具或库的链接应该附带使用说明、特定解释以及链接资源如何适用于问题的示例代码,如果可能的话,应该包含所有这些内容。 - IKavanagh
此插件已过期: [ERROR] 无法解析插件org.bitbucket.komo81:eclipse-aar-maven-plugin:1.0.0或其任何依赖项的工件:无法在中央存储库(http://jcenter.bintray.com)中找到工件org.bitbucket.komo81:eclipse-aar-maven-plugin:jar:1.0.0。 - tribbloid
插件没有过时,您必须按照说明向pom.xml中添加<section> <pluginRepositories>。 - komo
它不起作用,因为Dropbox的URL似乎不再存在。我已经为此提出了问题。此外,我已经克隆并编译了插件 - 必须修复最近JDK的构建。现在,我可以使用插件,但它似乎无法工作。这是我的Android开发简历:https://github.com/m-m-m/ui-android/wiki/android-sucks - Jörg
抱歉,但是这个插件已经不再维护了。 - komo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接