来自maven的aar会导致ClassNotFoundException。没有包括aar的依赖

时间:2016-02-25 05:32:51

标签: android gradle dependencies aar

我在Intranet maven repo中有一个utilities.aar。它使用一些众所周知的罐子,如gson。我已将它们定义为实用程序模块的build.gradle中的编译依赖项,如下所示

dependencies {
    compile 'com.android.support:support-v4:23.1.1'
    compile 'com.google.code.gson:gson:2.3.1'
    compile 'commons-codec:commons-codec:1.4'
    compile 'org.apache.commons:commons-lang3:3.4'
}

使用uploadArchives gradle任务在我们的Intranet服务器上上传了Artifactory repo。 Artifactory上显示的pom文件如下

<?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>adsf.asdf.utils</groupId>
  <artifactId>utilities</artifactId>
  <version>2.0.0.0</version>
  <packaging>aar</packaging>
  <dependencies>
    <dependency>
      <groupId>com.google.code.gson</groupId>
      <artifactId>gson</artifactId>
      <version>2.3.1</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>com.android.support</groupId>
      <artifactId>support-v4</artifactId>
      <version>23.1.1</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
      <version>3.4</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>commons-codec</groupId>
      <artifactId>commons-codec</artifactId>
      <version>1.4</version>
      <scope>compile</scope>
    </dependency>
  </dependencies>
</project>

我正在使用Android Studio v1.5构建工具23.0.2和gradle v2.8构建一个Android应用程序。此ADT包已于2016年1月下载。我的应用程序依赖于utilities.aar。它使用网页上的代码段添加到应用的build.gradle中,如下所示

compile(group: 'asdf.asdf.utils', name: 'utilities', version: '2.0.0.0', ext: 'aar')

Android Studio不会显示任何错误。它编译成一个很好的apk但当我运行它时,应用程序会立即崩溃java.lang.NoClassDefFoundError: com.google.gson.GsonBuilder

不应该自动下载gson并根据Artifactory repo中的pom将其编译到apk中吗?我是maven,android studio,gradle等的新手。我习惯于在Eclipse ADT中开发。我将不胜感激任何帮助。

1 个答案:

答案 0 :(得分:0)

Buddy这些库中的大多数包括gson都可以通过远程存储库获得。请尝试这篇文章的第3步:

https://stackoverflow.com/a/35369267/5475941

例如,gson搜索结果:

gson search result

我希望它有所帮助。