AndroidStudio添加依赖的方式介绍
本文转载自https://www.jianshu.com/p/52b192f3ce1c
-
android-apt
APT(Annotation Processing Tool),注释处理工具,对源代码文件进行检测,根据注解自动生成代码。并编译生成的源文件和原来的源文件,将它们一起生成class文件
-
annotationProcessor
编译时执行,不会打包到apk中。完全替代android-apt。
-
provided
编译时执行,不会打包到apk中。但是跟apt/annotationProcessor有着根本的不同。
A 、B、C都是Library。
A依赖了C,B也依赖了C
App需要同时使用A和B
那么其中A(或者B)可以修改与C的依赖关系为Provided
A这个Library实际上还是要用到C的,只不过它知道B那里也有一个C,自己再带一个就显得多余了,等app开始运行的时候,A就可以通过B得到C,也就是两人公用这个C。所以自己就在和B汇合之前,假设自己有C。如果运行的时候没有C,肯定就要崩溃了。
Provided是间接的得到了依赖的Library,运行的时候必须要保证这个Library的存在,否则就会崩溃,起到了避免依赖重复资源的作用。
-
compile
会编译到最后的APK或library中
-
api
完全等同于compile指令
-
implementation
对于使用了该命令编译的依赖,对该项目有依赖的项目将无法访问到使用该命令编译的依赖中的任何程序,也就是将该依赖隐藏在内部,而不对外部公开。
-
runtimeOnly
完全等同于Provided指令
-
compileOnly
如果一个app同时添加了多个依赖,而多个依赖中又同时添加了一个相同的依赖则报错,app中的依赖需要修改依赖方式为compileOnly.
A依赖了C,B也依赖了C
App需要同时使用依赖A和B
那么其中A(或者B)需要修改与C的依赖关系为compileOnly,否则会出现DexArchiveMergerException异常.