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


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

  • 相关阅读:
    Java并发-ThreadLocal的使用
    大数据学习(7)-hive文件格式总结
    python多进程(类成员函数、log在多进程中使用、自己维护进程池)
    R 语言入门 —— tidyverse
    leetcode第92场双周赛
    EfficientNet代码复现--ICML2019
    SPI 应用
    2022年学go还是java?
    OpenCV完美实现两张图片的全景拼接(详细教程)
    金仓数据库 KingbaseES 插件参考手册 M
  • 原文地址:https://blog.csdn.net/taoyuxin1314/article/details/126409263