Android gradle编译指令(implementation、api、provided 等)
Android Studio 3.0 开始废弃(obsolete)了很多原有的指令,并使用新的指令来代替它们。目的是为了加快编译构建的速度。
新旧指令对比
Android Studio 2.X | Android Studio 3.X |
---|---|
apk | runtimeOnly |
provided | compileOnly |
compile | api |
implementation | |
debugCompile | debugImplementation |
releaseCompile | releaseImplementation |
testCompile | testImplementation |
androidTestCompile | androidTestImplementation |
Android Studio 3.X 的依赖关系
-
Unit Test implementation 输出为 testImplementation
-
Test implementation 输出为 androidTestImplementation
apk & runtimeOnly
只在生成apk的时候参与打包,编译时不会参与
provided & compileOnly
provided只提供编译支持,但是不会写入apk。使用provide可以避免支持包版本冲突。
例如:
客户提供了一个接口文档,所有厂商都必须按这份接口文档做。做好之后不要将这份公共的接口 jar 包打包进去。这时候就可以这种依赖方式了。
compile & api、implementation
compile 是和 api 对应的,两者效果相同。
api 与 implementation 的区别在于对外的可见性。
例如:
A api B,B api C
那么 A 模块不仅可以引用 B 模块,还可以引用 C 模块的接口和类。
A implementation B,B implementation C
那么 A 模块只能引用 B 模块的接口和类,不能引用 C 模块,也就是说 C 对于 A 是不可见的。这样做的好处是提高了编译和链接的速度。
testCompile(testImplementation)
testCompile 只在单元测试代码时有效。
debugCompile(debugImplementation)
debugCompile 只在debug模式的编译和最终的debug apk打包时有效
releaseCompile(releaseImplementation)
Release compile 仅仅针对Release 模式的编译和最终的Release apk打包。
文章来源: blog.csdn.net,作者:福州-司马懿,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/chy555chy/article/details/85134165
- 点赞
- 收藏
- 关注作者
评论(0)