本地aar库的传递依赖性

时间:2016-04-28 14:01:06

标签: android android-gradle aar

我们正在为我们的API制作一些库,我们会让外部开发人员的生活更轻松。

因此我们创建了新的库项目,并将Retrofit和其他一些库作为依赖项。

dependencies {
    compile 'com.android.support:appcompat-v7:23.3.0'
    compile 'com.google.code.gson:gson:2.6.2'
    compile 'com.squareup.retrofit2:retrofit:2.0.1'
    compile 'com.squareup.retrofit2:converter-gson:2.0.1'
    compile 'com.squareup.okhttp3:okhttp:3.2.0'
}

现在,当我们构建它时,它会生成aar个文件。

但是现在当我们将aar文件放到libs目录并将其设置为依赖项时,我们仍然必须在用户的build.gradle文件中添加相同的依赖项,这很糟糕。它应该来自图书馆,对吗?

repositories {
    flatDir {
        dirs 'libs'
    }
}

dependencies {
    compile(name: 'ourlibrary', ext: 'aar') {
        transitive = true;
    }
}

如何让transitive = true工作?

1 个答案:

答案 0 :(得分:53)

aar 文件不包含嵌套(或transitive)依赖项,并且没有描述所使用的依赖项的pom文件库。

这意味着,如果您使用flatDir repo导入aar文件,则还必须在项目中指定依赖项。

在您的情况下,由于上述原因,添加transitive=true无法解决您的问题。

您应该使用 maven存储库(您必须在私人或公共maven仓库中发布库),您将不会遇到同样的问题。
在这种情况下,gradle使用pom文件下载依赖项,该文件将包含依赖项列表。