当消费应用程序应该满足这些依赖关系时,如何声明库项目的依赖关系?

时间:2017-10-24 20:01:32

标签: android gradle

我正在开发一个取决于某些第三方aars和jar的安卓库。

目前,这些依赖项是在库模块的gradle buildscript中声明的,如下所示:

repositories {
        flatDir{
            dirs 'libs', 'android-libs'
        }
}

dependencies{
    compile(name: 'threetenabp-1.0.5', ext: 'aar')
    compile fileTree(include: ['*.jar'], dir: 'libs')
}

然而,这导致依赖性'正在构建到aar中的类,在应用程序中使用库时可能会导致冲突。

如何在不实际将其打包到库中的情况下从库中引用这些依赖项?

我尝试更改"编译"提供"提供"然后将文件编译到应用程序中,但是当我这样做时,我的库无法构建。

1 个答案:

答案 0 :(得分:0)

https://docs.gradle.org/current/userguide/dependency_management.html#sec:how_to_declare_your_dependencies阅读一些内容后,我最终发现使用compile fileTree会将依赖项打包到输出库中。要避免这种情况,请使用以下语法单独声明每个依赖项:

dependencies {
compile: name: 'filename-without-extension' 
}

依赖关系将不再打包到输出中。

使用输出aar的项目仍然需要包含保存jar文件的flat-dir存储库,如下所示:

repositories {
        flatDir{
            dirs 'libs'
        }
}