最近将Android Studio升级到了3.X版本,同时Gradle也升级到了4.X,发现现在默认的依赖方式为implementation方式,以前使用的compile方式已经不推荐使用了,这里将2.x和3.x版本所有的依赖方式进行总结下。
compile(2.0)和api(3.0)
compile是对所有的build type以及favlors都会参与编译并且打包到最终的apk文件中。
provided(2.0)和compileOnly(3.0)
Provided是对所有的build type以及favlors只在编译时使用,类似eclipse中的external-libs,只参与编译,不打包到最终apk。
apk(2.0)和runtimeOnly(3.0)
只会打包到apk文件中,而不参与编译,所以不能再代码中直接调用jar中的类或方法,否则在编译时会报错。应该是在运行时通过反射来调用吧。
implementation(3.0)
Android Studio 3.0 新增的依赖模式,例如项目依赖某个Module,而Module又依赖于某个库,如果使用implementation的方式,则主项目不能访问Module所依赖的库。
debugCompile(2.0)和debugApi(3.0)和debugImplementation(3.0)
debugCompile 仅仅针对debug模式的编译和最终的debug apk打包。
releaseCompile(2.0)和releaseApi(3.0)和releaseImplementation(3.0)
releaseCompile 仅仅针对Release 模式的编译和最终的Release apk打包。
testCompile(2.0)和testApi(3.0)和testImplementation(3.0)
testCompile 仅仅是针对单元测试代码的编译编译以及最终打包测试apk时有效,而对正常的debug或者release apk包不起作用。
androidTestCompile(2.0)和androidTestApi(3.0)和androidTestImplementation(3.0)
android单元测试时有效,正常的debug和release包无效。