Gradle里面的依赖implementation和api的区别理解
Gradle新版本里面依赖的写法支持implementation和api,下面简单解释两者的区别:
implementation 表示依赖,即 只依赖不打包进来。
api 表示打包,即 不仅依赖还打包进来,这样上层就不用重复依赖。
注意:这里的打包是便于理解,是指打包依赖关系而不是打包源代码,也就是说将依赖暴露给上层。
下面举例说明:
app主模块下的依赖:
dependencies { implementation project(path: ':home') } //依赖home模块,使用implementation。
home模块下的依赖:
dependencies { api project(path: ':mvp') } //使用api,表示将mvp模块引入并打包进home模块。因为mvp模块含v7包,home模块也含v7包。
mvp模块下的依赖:
dependencies { api 'com.android.support:appcompat-v7:28.0.0' } //使用api,表示将v7包引入并打包进mvp模块。
相当于:
app主模块下的依赖:
dependencies {
implementation project(path: ':home')
implementation project(path: ':mvp')
implementation 'com.android.support:appcompat-v7:28.0.0'
} //依赖home模块,和home模块需要显示引入v7包一样,app引入home模块后还需要显示引入mvp模块和v7包。
home模块下的依赖:
dependencies {
implementation project(path: ':mvp')
implementation 'com.android.support:appcompat-v7:28.0.0'
} //依赖mvp模块.因为mvp模块引入v7包使用的implementation,也就是只给自己使用,没有将v7包打包进mvp模块,所以home模块还要引入v7包。
mvp模块下的依赖:
dependencies {
implementation 'com.android.support:appcompat-v7:28.0.0'
} //依赖v7包,使用implementation,只依赖v7进mvp模块,不打包向上提供
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!
2017-08-02 Android Studio出现java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException的总结和解决方法