什么是gradle wrapper和gradlew.bat文件?

时间:2017-07-01 11:20:23

标签: android performance android-studio gradle android-gradle

最近我开始了解Gradle作为构建系统和Android开发人员的强大功能,我想深深理解它。

一篇文章说: -

“您可以使用Gradle包装器命令行工具执行Android项目可用的所有构建任务。它可用作Windows的批处理文件(gradlew.bat)和Linux和Mac的shell脚本(gradlew) .sh),它可以从您使用Android Studio创建的每个项目的根目录中访问。“

要使用包装器运行任务,请使用以下命令之一:

在Windows上: gradlew任务名称

现在我有一些怀疑如下: -

  1. 什么是Gradle Wrapper和gradlew.bat?
  2. 如果我安装了Android工作室并且正在使用gradle来构建我的应用程序(因此我的系统中已经安装了gradle),那么在这种情况下,我是否还需要从命令行安装gradle用于构建目的在我的命令行上写任何像gradle,gradlew这样的推荐,我得到错误说 gradlew不被识别为内部或外部命令(其他命令的错误相同)。我可能在错误的路径上使用它,帮助我使用gradle相关命令需要什么路径?
  3. 如果我需要下载并安装它,我该如何以及在哪里找到该文件?和其他过程?
  4. 我正在使用Windows机器。

3 个答案:

答案 0 :(得分:21)

Gradle Wrapper是Gradle构建系统的可选部分。它由四个文件组成,您可以将其检入版本控制系统。 * nix启动脚本<your root project>/gradlew<your root project>/gradlew.bat Windows启动脚本<your root project>/gradle/wrapper/gradle-wrapper.jar,其中包含包装器的类文件,由启动脚本启动,<your root project>/gradle/wrapper/gradle-wrapper.properties包含一些包装器的配置,例如用于构建项目的Gradle版本。

在我看来,每个Gradle项目,即使是最小的项目,都应该使用Gradle包装器。

Gradle包装器确保您的构建始终使用相同的Gradle版本运行,无论是谁执行构建以及是否安装了Gradle,只要使用Gradle包装器构建项目。这意味着您可以为Gradle版本设计构建,并确保构建不会失败,因为有人使用的是不同版本的Gradle,因此也是构建再现性的重要一步。

此外,希望构建项目的人只需要安装Java就可以了。他不需要安装任何Gradle版本。实际上,任何已安装的Gradle版本都会被忽略。 Gradle包装器检查在~/.gradle/中是否已经存在构建所需的版本,因为任何项目的某些Gradle包装器已经将它放在那里。如果已经存在,则使用它,否则会自动下载。

如果在命令行上键入gradlew并且找不到命令,则表示您没有将根项目路径放到PATH环境变量中(我不建议这样做),不是您目前位于根项目目录中。要运行Gradle构建,您必须在项目内的任何位置并调用Gradle或Gradle包装器。但是,与任何不在路径上的可执行文件一样,您必须提供其路径。因此,如果您位于根项目目录中,则可以执行gradlew。如果您在<root project dir>/foo/bar/,则需要致电../../gradlew

Gradle Wrapper文件由隐式可用的Gradle任务wrapper生成,然后检入相关项目的VCS。如果项目不存在这四个文件,则它不使用Gradle包装器,您应该向项目发布改进请求以添加它。

如果某个项目不使用Gradle包装器,但使用Gradle构建,则可以安装Gradle并使用gradle代替gradlew,或者甚至可以调用任何其他项目的Gradle包装器您在磁盘上可用。然后,构建将使用包装器或Gradle安装正在使用的Gradle版本运行,因此可能不会按预期运行,这就是为什么每个项目和任何项目在使用Gradle时都应该使用包装器。

答案 1 :(得分:1)

  1. gradlew.bat是Gradle Wrapper(在这种情况下适用于Windows)。 Gradle Wrapper只是一个小实用程序,可确保安装Gradle(或在必要时安装),以便您始终可以构建项目。 Gradle本身允许您管理项目的依赖关系和构建配置。

  2. 如果您已经安装了Android Studio,那么您已经安装了Gradle并且很适合。 (从技术上讲,每个项目都有自己的包装来处理安装/使用Gradle)

  3. 正如我上面提到的,你很高兴。

  4. 最后,Gradle是一个命令行工具,可用于构建项目,您可以直接使用它(尽管您不必这样做),因为它正是Android Studio用于构建项目的内容

答案 2 :(得分:0)

在评论后编辑

Gradle是一个构建系统。

这个gradle-wrapper是构建Android项目的主要接口。它是Gradle-build-system的一部分,如果安装了gradle,它会进行一些初步检查。

gradlew.bat - 在Windows上使用的batch file。您甚至可以使用记事本打开它以查看其中的说明。批处理文件就像写在要执行的文件中的“命令”。您可以使用它(在Windows的情况下)来执行构建命令。它还会检查是否安装了gradle。如果不是,则下载并安装它。

示例:在Windows上构建Android应用程序:

  • 打开命令提示符
  • 导航到项目的根目录
  • 执行gradlew.bat assembleDebug

启动包装器,检查是否安装了Gradle    执行所有'gradle specific'命令来构建你的项目。

您需要安装Gradle吗?

实际上,没有。它是这个gradlew脚本的工作来检查它。如果没有它的gradle,它将自动下载并将其用于所有以后的版本。