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