Android gradle编译指令(implementation、api、provided 等)

举报
福州司马懿 发表于 2021/11/19 01:49:17 2021/11/19
【摘要】 Android Studio 3.0 开始废弃(obsolete)了很多原有的指令,并使用新的指令来代替它们。目的是为了加快编译构建的速度。 新旧指令对比 Android Studio 2.XAndr...

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

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。