Gradle3.0新指令api、provided、implementation等对比
Android Studio3.0正式版已经出来了,相比2.x的版本,Gradle版本也升级为了3.x,编译速度提高了不少。
在gadle3.0之后,默认的依赖由之前的compile更改为implementation
-
对比表
Android Studio 2.X Android Studio 3.X apk runtimeOnly provided compileOnly compile api 没有对应 implementation debugCompile debugImplementation releaseCompile releaseImplementation androidTestCompile androidTestImplementation -
api (compile)
- 依赖向上传递
- 若A api B, B api C,C module对A module可见
-
implementation (新指令: 具备依赖可见性)
-
依赖不向上传递
-
若A implementation B, B implementation C,C module对A module不可见
-
若A implementation B, B api C,C module对A module可见
-
功能同api,区别仅仅是增加了依赖可见性
-
-
compileOnly(provided)
- 只在编译时有效,不会参与打包
- 若A implementation C,打包后apk(A + C);而A compileOnly C,打包后apk(A);该指令实质:A module假装依赖了C module通过欺骗编译器编译时检测以避免java.lang.ClassNotFoundException编译报错
- 使用情形
- A implementation C,B implementation C,打包时A module生成aar(A + C),B module生成aar(B + C)
- 若改成A implementation C,B compileOnlyC,打包时A module生成aar(A + C),B module生成aar(B)
- 最终apk包(A + B + C),结果一致
- 虽然aar(B)不真实依赖C module,但B module确实用到了C module的api。没有运行时错误的原因:aar(A + C)与aar(B)合并生成apk,B module运行时找到并调用aar(A + C)中的C module
-
runtimeOnly(apk)
只在生成apk的时候参与打包,编译时不会参与,很少用。
-
debugImplementation(debugCompile)
debugImplementation 只在debug模式的编译和最终的debug apk打包时有效。
-
releaseImplementation(releaseCompile)
releaseImplementation 仅仅针对release 模式的编译和最终的release apk打包。
-
androidTestImplementation(androidTestCompile)
androidTestImplementation 只在单元测试代码的编译以及最终打包测试apk时有效。
作者:Dsiner
链接:https://www.jianshu.com/p/83ddb81e73f9
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
分类:
android提高篇
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
2015-11-14 U盘安装Ubuntu14.4时遇到分区问题记录
2015-11-14 在项目中同时使用Objective-C和Swift
2015-11-14 Java字节转换类实现
2014-11-14 actionBar兼容2.1及以上版本的做法 .
2014-11-14 Android UI开发详解之ActionBar .
2014-11-14 Android ActionBar详解(三):ActionBar实现切换Tabs标签
2014-11-14 Android ActionBar详解(二):ActionBar实现Tabs标签以及下拉导航 .