我在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