android gradle 4.0编译依赖项已弃用 - 新的api配置可见性如何工作?

时间:2017-05-28 20:47:29

标签: android gradle-plugin

如果我们看看gradle构建工具,我们会注意到不推荐使用编译配置依赖关系来支持 api 实现。见here

所以我对使用api的依赖可见性提出了质疑。想象一下,我们在名为app的模块中设置了以下内容:

dependencies {
    api 'commons-httpclient:commons-httpclient:3.1'
    implementation 'org.apache.commons:commons-lang3:3.5'
}

所以从我收集的org.apache.com:commons-lang3:3.5只能在模块本身中使用。但是commons-httpclient:commons-httpclient:3.1依赖将在模块之外可用,这实际意味着什么?这是否意味着如果我将我的app模块放入一个库中,依赖关系将对任何使用该库的人可用, (不管怎么说,总是这样吗?

这是Android文档关于api配置的说法:

  

api compile在编译时,模块可以使用依赖项,并且在编译时和运行时它也可供模块的使用者使用。此配置的行为与compile(现在已弃用)类似,您通常只应在库模块中使用它。应用程序模块应使用实现,除非您要将其API公开给单独的测试模块。   compileOnly提供

0 个答案:

没有答案