android 依赖项目,理解 Android 新的依赖方式

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

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

6b9c530aae8ede2f35988bab7e199414.png

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

Implementation change: 内部代码变更,但模块的外部接口不变。

Application binary interface (ABI) change: 外部接口修改。

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

Implementation change

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

c71e1fef630ee23c1a3d3646ce6da863.png

ABI change

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

bd3e74118d6ac1deb35cefcb8f45bb0d.png

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

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

api:和 compile 的作用一样,当前 module 会暴露其依赖的其他 module 内容。

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')

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值