天天看点

gradle命令中api和implement的区别

Android Studio 3.0为了加快构建速度,使用了新的编译指令,原来的很多指令被弃用了。

Android Studio 2.x Android Studio 3.x
apk runtimeOnly
provided compileOnly
compile api
无对应值 implementation
debugCompile debugImplementation
releaseCompile releaseImplementation
androidTestCompile androidTestImplementation

一、 implementation与api的区别

这两者主要区别在于对module的可见性,而且可以加快编译速度

api:

A api B,B api C 
           

A不仅可以引用B module的接口和类,而且还能直接引用C module的接口和类。

implementation:

A implementation B,B implementation C
           

这时A只可以引用B中的接口和类,不可以引用C中的接口和类。C 对 A 是不可见的!

二、compileOnly 和 api 区别

compileOnly 只提供编译支持,但是不会写入apk;
api不仅提供编译支持,而且会打入apk包体。
           

根据实际情况合理运用compileOnly和api指令,可以避免v7、v4等包的版本冲突和重复打包导致apk文件体积增大。