• 关于安卓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.

  • 相关阅读:
    Go - 基本数据类型和其字符串表示之间转换
    Python05、字典、键值对、文件、标准库
    ffmpeg源码阅读之avformat_open_input
    JS本地存储 sessionStorage和localStorage
    Linux程序调试工具使用整理
    顺序表实现集合并集
    已经完成Qt布局中,添加布局
    信奥中的数学:微积分 高等数学 数学分析
    蓝绿发布,灰度发布,滚动发布
    Unity VideoPlayer 指定位置开始播放
  • 原文地址:https://blog.csdn.net/taoyuxin1314/article/details/126409263