我的手机 2019/8/2 15:23:41
Gradle 3.4 添加了 api,implementation等用于替代compie ,但是在3.3中 如果我在moudleA 中的libs 中加入一个jar包 而在app moudle 中 依赖 moudleA (moudleA 中对jar包的依赖是通过compile 实现的,即compile fileTree(include: ['.jar'], dir: 'libs')) ,却出现 app 不能引用 moudleA 中的jar包,而compile不是有传递依赖特性吗?为什么不行呢? 而我把gradle 版本换成 3.4 使用 api 的方式使moudleA 依赖 jar包( api fileTree(include: ['.jar'], dir: 'libs')) 在 app moudle中就可以引用到moudleA 中jar包。不是说api继承了 compile的特性吗?为什么 在3.3中compile 就没有传递特性了呢?
implementation
compile
implementation
而不是api
/compile
可以显著缩短构建时间,因为它可以减少构建系统需要重新编译的项目量。 大多数应用和测试模块都应使用此配置。api
compile
compile
(现在已弃用),一般情况下,您应当仅在库模块中使用它。 应用模块应使用implementation
,除非您想要将其 API 公开给单独的测试模块。compileOnly
provided
provided
(现在已弃用)。runtimeOnly
apk
apk
(现在已弃用)。