关于安卓api、implementation、compile的区别

本文介绍了在Android开发中,由于compile已废弃,现在主要使用api和implementation来依赖第三方库。api与implementation的关键区别在于模块间的可见性:api引入的库对其他模块可见,而implementation则限制了库的可见性。在模块依赖关系中,正确选择这两者可以避免不必要的依赖传递,优化构建效率。
摘要由CSDN通过智能技术生成

最新打开一个老项目,主要是想迁移到AndroidX,然后发现里面还有很多问题,比如还存在用compile来依赖第三方库。

在我高版本的Android stuido 及 Android API中,项目编译不起来了。

关于依赖第三方库,有三种方式,分别是api、implementation、compile,在同一个module下面,这三种的作用都是一样的,但是在高版本的API中,使用compile会发现,compile被画上了横线,甚至编译不通过,说明在高版本中,compile已经被废弃了。也就是目前来说,只剩下api、implementation。

那么api、implementation两者有什么区别呢?

主要体现在moudle相互依赖上,假设有三个module,分别是A、B、C,C中依赖一个第三方库Gson。

情况一:当C使用implementation 引用Gson的时候,无论A、B 使用哪些方式引用C,C可以使用到Gson,A、B都无不行

使用Gson。

情况二:当C使用api 引用Gson的时候,当A  api B,B api C,则A、B、C都可以使用Gson

情况三:当C使用api 引用Gson的时候,当A  implementation B,B api C,则B、C都可以使用Gson,而A不行。

情况四:当C使用api 引用Gson的时候,当A  api B,B implementation C,则A、B都不可以使用Gson,而C可以。

总结一句话就是:

在同一个module下,无论使用implementation,还是api引入第三方库,本modle都可以使用

在不同module下,使用api引入的包对于其他module来说是可见的,也就是其他module也可以直接使用,而用implementation引入是对其他module是不可见的,也就是其他module无法直接使用。

补充一点,如果compile不废弃不过期的话,它的作用跟api是一样的。

that'all.

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
gradle implementationcompile都是在项目中使用的依赖管理关键字。 在旧版本的Gradle中,使用的是compile关键字来引入项目中所需要的依赖库。例如,使用compile 'com.android.support:appcompat-v7:28.0.0'来引入Android Support库中的appcompat库。 然而,在Gradle 3.0及以上的版本中,compile已经被implementation所取代。这是由于implementation可以更好地处理依赖的传递性问题。所谓的传递性问题是指当一个库依赖另外一个库时,是否需要将被依赖的库也自动地引入到项目中。 通过使用implementation关键字,Gradle能够更好地优编译过程,只将直接使用的库引入项目中,而不会将间接使用的库也引入项目中。这可以有效减少项目的编译时间,并减少最终应用包的大小。 例如,假设库A依赖库B,而项目只直接使用了库A。如果使用compile关键字,则会将库B也引入到项目中,即使项目中并没有直接使用库B。但如果使用implementation关键字,则只会将库A引入项目中,不会引入库B,从而减少了项目的依赖。 除了implementation之外,还有另外两个依赖管理关键字:api和testImplementationapi关键字可以将依赖库引入到项目的编译路径中,并可以传递给依赖项目。而testImplementation关键字则是专门用于引入测试时所需的库。 总而言之,compile和implementation都是用于项目中的依赖管理,但Gradle 3.0及以上的版本推荐使用implementation来更好地管理项目的依赖关系。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值