理解 Android 新的依赖方式

作者: 极小光 | 来源:发表于2017-07-18 14:49 被阅读2302次

    简评:Android 团队在 Android Studio 3.0 中给我们带来了非常多的改变,其中一点就是对项目依赖方式的改进。这篇文章就将详细介绍下这项改进。

    首先,我们来看这样一种情况:


    一个 App 工程往往是由许多互相依赖的 module 所组成,对于处于最底层、最基础的 module,有两种可能的变化:

    1. Implementation change: 内部代码变更,但模块的外部接口不变。
    2. Application binary interface (ABI) change: 外部接口修改。

    Note: 下面重新编译的模块将用红色显示。

    Implementation change

    因为 module 的外部接口没有改变,所以 Gradle 只会重新编译变更的 module,其他依赖它的 module 则不会重新编译。如图所示:

    ABI change

    如果模块的外部接口发生了改变,那么所有依赖了该 module 的其他 module 都需要重新编译,这就使得编译时间变长了。


    因此,这里就是一个可以优化的地方,Android Gradle Plugin 3.0 就想解决这个问题。

    如果,你已经用上了 Android Studio 3.0 Preview 的话,就会发现在 build.gradle 中 api 和 implementation 已经取代了曾经的 compile。

    • api:和 compile 的作用一样,当前 module 会暴露其依赖的其他 module 内容。
    1. implementation:只在内部使用了该 module,不会向外部暴露其依赖的 module 内容。

    所以,我们可以为特定 module 选择 implementation 关键字来加快 gradle 构建速度。

    dependencies {
      // recompile this module and all modules using this one
      // when legofy interface is modified
      api project(':legofy')
    
      // only recompile this module when landscapevideocamera interface is modified
      implementation project(':landscapevideocamera:1.0.0')
    }
    

    更多信息,大家可以阅读官方的迁移指南

    原文:Implementation vs API dependency
    延伸阅读:
    探究在 TextView 中显示 HTML 的正确方法

    相关文章

      网友评论

        本文标题:理解 Android 新的依赖方式

        本文链接:https://www.haomeiwen.com/subject/eyhhkxtx.html