android gradle依赖:implementation和compile、compileOnly的区别

举报
yd_221104950 发表于 2020/12/03 01:14:18 2020/12/03
【摘要】 Android Studio 3.0+后的module依赖: dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.const...

Android Studio 3.0+后的module依赖:

dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test.ext:junit:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在Android studio3.0+中:

  • compile已被弃用,被implementation和api替代
  • provided已被弃用,被compileOnly替代
  • testCompile已被弃用,被testImplementation替代
  • androidTestCompile已被弃用,被androidTestImplementation替代

它们决定了依赖的可见范围。 如:

  • implementation:使用该命令编译的依赖,仅仅对当前的Module提供接口。将该依赖隐藏在内部,而不对外部公开,这是implementation关键字的作用。 该依赖方式所依赖的库不会传递,只会在当前module中生效。 依赖优先设置为implementation的,如果有错,再考虑使用api指令。这样做一来可以隐藏对外不必要的接口,二来可以加快编译速度。可以加速编译的原因是当项目中含有多个Module模块时, 使用implementation指令编译的依赖可以单独在模块内编译。 如果使用的是api或者compile,那么其他模块有引用它时,其他的模块也需要重新编译。

  • api:使用该命令编译的依赖,可以对项目里的所有模块提供接口,对外部公开。 该依赖方式会传递所依赖的库,当其他module依赖了该module时,可以使用该module下使用api依赖的库。
    注意:当我们依赖一些第三方的库时,可能会遇到com.android.support冲突的问题,就是因为开发者使用的compile或api依赖的com.android.support包与我们本地所依赖的com.android.support包版本不一样,所以会报All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes这个错误。参考《com.android.support版本号冲突的解决办法》

  • compileOnly:只在编译时有效,不会参与打包。可以在自己的module中使用该方式依赖一些如com.android.support这些常用的库,避免冲突。

  • testImplementation:只在单元测试代码的编译和最终打包测试apk时有效。

谢谢阅读

文章来源: blog.csdn.net,作者:WongKyunban,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_40763897/article/details/103502959

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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