一个android项目中引用的其他项目或依赖库使用的目是不一样的。下面是详细的说明
新配置 | 废弃的配置 | 行为 |
---|---|---|
implementation |
compile |
添加到编译路径中,同时包含在输出(如APK),但是在作为模块被其他项目引用是,此依赖只会在运行时环境中依赖,编译时不需要。这样定义的目的是显著优化编译速度。比如模块B依赖模块A,模块C、D、E依赖模块B,如果模块B中使用implementation 的方式依赖A时,如果A做了修改,那么只会重新编译B,而C、D、E模块都不需要重新编译。大多数的应用和测试模块均应使用此配置。 |
api |
compile |
此依赖和 implementation 类似,但间接依赖此模块的模块需要重新编译,如implementation 例子中的C、D、E模块都需要重新编译。 |
compileOnly |
provided |
在编译路径中,但不在输出中。因此有这样依赖的模块应该动态的检查依赖的模块是否存在。这样的依赖可以减少最终APK的大小。此依赖不会向下延伸。 |
runtimeOnly |
apk |
不在编译路径中,但包含在输出中。 |
annotationProcessor |
compile |
注解处理器,有些第三方工具可以处理模块中的注解,通过此配置单独制定可以减少扫描处理器的包数量。 |
以上的说明是针对正常模块中的,针对测试(test)和安卓测试(androidTest)也有相同的依赖要求,只需要在配置名称的前面加上对应的前缀,并将首字母大写即可。