我在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中开发。我将不胜感激任何帮助。
您可以在依赖项中添加传递:true选项,然后再试一次 –
如果要下载依赖关系,请使用@aar符号,您应该添加transitive = true。 –
@ GabrieleMariotti'ext:'aar''和'@ aar'一样。 – RaGe