Gradle sync不会使用@aar注释自动解析Android库项目依赖项

时间:2015-08-25 12:43:13

标签: android gradle android-gradle android-library gradlew

我已在此处创建了一个Android库项目:https://github.com/dbotha/Android-Photo-Picker

照片选择器库项目本身有几个依赖项:

// library build.gradle
dependencies {
    compile 'com.android.support:appcompat-v7:22.2.1'
    compile 'com.squareup.picasso:picasso:2.5.2'
}

我已经在Maven Central上提供了这个库项目,因此它可以作为依赖项轻松添加到应用程序中:

// application build.gradle
dependencies {
    compile 'ly.kite:photo-picker:1.1.2@aar'
}

问题是,当我将它作为依赖项添加到新的Android应用程序项目时,它崩溃了,因为它无法从库项目中找到Picasso依赖项:

Caused by: java.lang.ClassNotFoundException: Didn't find class "com.squareup.picasso.Picasso" on path

只有当我明确地将此依赖项添加到应用程序build.gradle时才能正常工作。

我的库POM文件dependencies看起来正确无误:https://repo1.maven.org/maven2/ly/kite/photo-picker/1.1.2/photo-picker-1.1.2.pom

所以我很好奇,如果包含我的照片选择器库作为依赖项的应用程序总是需要显式添加所有照片选择器库依赖项吗?

1 个答案:

答案 0 :(得分:1)

您使用的是@aar表示法 这意味着您只想下载aar工件,而不是依赖项 您可以查看documentation的这一部分:
查看1.4.1.2. Artifact only notation部分:

  

仅工件表示法创建模块依赖项,该依赖项仅下载具有指定扩展名的工件文件。 忽略现有模块描述符

如果要下载依赖项,请使用@aar表示法,添加transitive=true

我希望省略@aar它应该有用。