最新打开一个老项目,主要是想迁移到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.

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐