2016-02-25 46 views
0

我在Intranet maven仓库中有一个utilities.aar。它使用几个众所周知的罐子,如gson。我在公用事业模块的build.gradle它们定义为编译依赖如下从maven导致ClassNotFoundException。没有包括aar的依赖关系

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' 
} 

已上传Artifactory的回购使用uploadArchives gradle这个任务我们的内部网服务器上。在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 1.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

不应该gradle自动下载gson并将其编译到apk文件中,以便根据Artifactory回购中的pom?我对maven,android studio,gradle等都很陌生,我习惯在Eclipse ADT中开发。我将不胜感激任何帮助。

+1

您可以在依赖项中添加传递:true选项,然后再试一次 –

+0

如果要下载依赖关系,请使用@aar符号,您应该添加transitive = true。 –

+0

@ GabrieleMariotti'ext:'aar''和'@ aar'一样。 – RaGe

回答