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文件体积增大。