“提供的文件”和“编译”有啥区别

Posted

技术标签:

【中文标题】“提供的文件”和“编译”有啥区别【英文标题】:What is the difference between "provided files" and "compile"“提供的文件”和“编译”有什么区别 【发布时间】:2015-03-20 03:20:48 【问题描述】:

android Studio 的“依赖项”选项卡的“模块设置”中,您可以选择库文件的范围。 “编译”和“提供”有什么区别?

【问题讨论】:

【参考方案1】:

compile 将库包含在您的最终 APK 中,而 provided 不包含; provided 是仅编译时的依赖项。

【讨论】:

我已经编译了,但 jar 仍然没有包含在 apk 中。 为什么名字搞砸了? compile 应该表现得像 compile 一样,并且像提供给 apk 一样提供,对吗? 如果最终的apk不包含参考包会导致报错?【参考方案2】:

Gradle v3.0 包括下一个更改:

compile -> api - 暴露对消费者的依赖

provided -> compileOnly - 是编译时依赖(不包含在二进制文件中并且在运行时不可用),这就是为什么它允许您缩小最终二进制文件的大小。通常用于注解处理器

[Read more]

【讨论】:

【参考方案3】:

该说什么?说白了,compile or api会在编译的时候就存在,打包到最终的工程中,可以传递给子依赖使用。 provided仅在编译时存在,打包到最终项目中时不存在。打包成最终项目后如果没有其他地方继续提供依赖会报错,一般用于开发第三方jar包等。

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于“提供的文件”和“编译”有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

编译器和链接器有啥区别?

编译器中的“语法”和“语法”有啥区别?

ide和编译器有啥区别,啥是ide,啥是编译器?

javac 和 Eclipse 编译器有啥区别?

实现编译器和解释器有啥区别?

编译代码和可执行代码有啥区别?