关于compile,api和implementation的区别

在Android开发中使用AndroidStudio开发的时候是使用Gradle来构建我们的Android项目的,其中app目录下有个build.gradle文件,

在dependencies {...}的闭包中有一些我们引用的第三方maven的远程依赖库,以前我们都是这样依赖的:

compile 'com.android.support:appcompat-v7:26.1.0'

然后sync project,就能成功引用对应的包到项目之中了,十分方便。除了使用compile关键字,使用implementation和api也能将包引用到项目中。随着Gradle版本的更新,Gradle越来越不推荐这种方式来引用远程依赖了,而是推荐这种方式:

api 'com.android.support:appcompat-v7:26.1.0'

所以以后使用api的引用方式就可以了,但是又一个问题,还有一种引用方式implementation与以上这种有什么区别呢?

想象一种情况,当我们的项目越来越大的时候,有时候会使用多个module来开发,其中每个module都有自己的build.gradle,都有自己的依赖,这个时候implementation依赖的库就只能在当前module中使用了,相当于当前module的私密依赖。

在同一个module下,implementation和compile的使用效果相同,但是在不同module下,就会有所区别了。举个例子,在项目中有一个名为action的module,其gradle配置文件中引用了两个包:

implementation 'com.android.support:appcompat-v7:26.1.0'
compile 'com.android.support:design:26.1.0'

然后在app module中引入action module:

compile project(':action')

如果此时你尝试在app module中引入action module在gradle中配置的两个maven库,你会发现,使用implementation关键字的appcompat-v7包无法在app module中使用,而使用compile关键字的design包则可以使用。
这样,两个关键字的区别就显而易见了,总结:api或compile关键字引用的包对于其他module来说是可见的,而implementation关键字引用的包对于其他module来说是不可见的。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值