如果我们看看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提供