Gradle对我来说有点困惑,对于任何新的Android开发者也是一样。有人能解释一下Android Studio中的Gradle是什么以及其目的是什么吗?为什么它被包含在Android Studio中?
Gradle对我来说有点困惑,对于任何新的Android开发者也是一样。有人能解释一下Android Studio中的Gradle是什么以及其目的是什么吗?为什么它被包含在Android Studio中?
Gradle 是一个构建系统。
在使用 Android Studio 之前,您可能使用 Eclipse 进行开发,而且很有可能不知道如何在没有 Eclipse 的情况下构建 Android APK。
您可以在命令行上执行此操作,但必须学习 SDK 中每个工具(dx 和 AAPT)的作用。Eclipse 通过提供自己的构建系统,使我们摆脱了这些低级但重要的基本细节。
现在,您是否曾想过为什么 res
文件夹与您的 src
文件夹在同一目录中?
.java
或.xml
),然后应用适当的工具(例如,将.java
类文件转换成.dex
文件),并将它们全部组合成一个压缩文件-我们心爱的APK。这个构建系统使用一些约定:其中之一是指定包含源文件(在Eclipse中为\src
文件夹)或资源文件(在Eclipse中为\res
文件夹)的目录。
为了自动化所有这些任务,必须有一个脚本;您可以使用Linux中的shell脚本或Windows中的批处理语法编写自己的构建系统。
Gradle是另一个构建系统,它汲取了其他构建系统的最佳特点,并将其结合在一起。它改进了他们的不足之处。它是基于JVM的构建系统。这意味着您可以在Java中编写自己的脚本,Android Studio将利用它们。
build.gradle
或build.gradle.kts
文件。这是您可以编写脚本来自动化任务的地方。在这些文件中看到的代码是Groovy或Kotlin代码。如果您编写System.out.println("Hello Gradle!");
,那么它将在控制台上打印出来。这是谷歌想要用于Android的新构建工具。由于它比Ant更加可扩展和实用,因此被采用。旨在增强开发者的体验。
您可以观看来自Android开发团队的Xavier Ducrohet在Google I/O上的演讲。
还有另一场由Xavier和Tor Norbye进行的关于Android Studio的讲座,也在Google I/O期间发布。
Gradle
类似于make
时,我就理解了它的概念。 - user3405291这里有关于Gradle是什么以及如何在Android Studio中使用它的详细说明。
探索Gradle文件
Gradle构建文件
Gradle构建文件使用一种领域特定语言或DSL来定义自定义构建逻辑,并与Android插件的Android特定元素交互。
Android Studio项目由一个或多个模块组成,这些模块是您可以独立构建、测试和调试的组件。每个模块都有自己的构建文件,因此每个Android Studio项目都包含两种Gradle构建文件。
顶层构建文件:在这里,您将找到适用于组成您的项目的所有模块的配置选项。
模块级别构建文件:每个模块都有自己的Gradle构建文件,其中包含特定于模块的构建设置。您将花费大部分时间编辑模块级别的构建文件,而不是您项目的顶层构建文件。
要查看这些build.gradle
文件,请打开Android Studio的Project面板(选择Project选项卡),然后展开Gradle Scripts文件夹。
Gradle Scripts文件夹中的前两个项目是项目级别和模块级别的Gradle构建文件。
顶级 Gradle 构建文件
每个 Android Studio 项目都包含一个单独的顶级 Gradle 构建文件。这个 build.gradle
文件是出现在 Gradle Scripts 文件夹中的第一项,并且明确标记为 Project。
大多数情况下,您不需要对此文件进行任何更改,但了解其内容和在您的项目中所起的作用仍然很有用。
模块级 Gradle 构建文件
除了项目级别的 Gradle 构建文件之外,每个模块都有自己的 Gradle 构建文件。下面是一个基本的、带有注释的模块级 Gradle 构建文件。
其他 Gradle 文件
除了 build.gradle 文件之外,您的 Gradle Scripts 文件夹还包含其他一些 Gradle 文件。大多数情况下,您不必手动编辑这些文件,因为当您对项目进行任何相关更改时,它们会自动更新。但是,理解这些文件在您的项目中所起的作用是一个好主意。
gradle-wrapper.properties(Gradle 版本)
这个文件可以让其他人构建你的代码,即使他们的机器上没有安装Gradle。这个文件会检查是否安装了正确的Gradle版本,如果需要则下载所需版本。settings.gradle
这个文件引用了组成您项目的所有模块。
gradle.properties (项目属性)
这个文件包含整个项目的配置信息。默认情况下为空,但是您可以通过将它们添加到此文件中来应用各种属性到您的项目中。
local.properties (SDK位置)
这个文件告诉Android Gradle插件它可以在哪里找到您的Android SDK安装。
注意:local.properties
包含特定于Android SDK本地安装的信息。这意味着您不应该将此文件纳入源代码控制。
我从这篇文章中对Gradle有了清晰的理解。
Gradle是一种构建工具,用于构建程序的源代码。因此它是Android Studio的重要组成部分,在开始开发应用程序之前需要安装。
我们不必单独安装它,因为当我们创建第一个项目时,Android Studio会为我们安装它。
minimumSdk
maximumSdk
targettedSdk
versionCode
versionName
我们可以按需加入Android库或任何其他第三方库。这很容易,而以前却是一项繁琐的任务。如果该库不适合现有项目,开发者会看到一个日志,其中可以找到适当的解决方案,以便对项目进行更改,以便添加该库。这只是一个依赖项。
生成多种构建
将构建类型与构建风味组合以获得多种构建变体。
==================== ====================
| BuildTypes | | ProductFlavours |
-------------------- ====================== --------------------
| Debug,Production | || || | Paid,Free,Demo,Mock|
==================== || || ====================
|| ||
VV VV
=================================================================
| DebugPaid, DebugFree, DebugDemo, DebugMock |
| ProductionPaid, ProductionFree, ProductionDemo, ProductionMock |
=================================================================
Gradle 可以通过移除未使用的资源和集成库中的未使用项来减小生成的构建的大小。
我们可以根据要求在某些情况下添加特定的权限,为某些构建指定特定的权限。
我们可以管理为某些包括特定密度和特定 API 级别的设备生成构建。这有助于根据需求在多种类型的设备上进行产品部署。
冒昧问一句,为什么Android Studio / Gradle的使用体验如此糟糕?
Clojure 的典型使用体验:
Android Studio / Gradle 的典型使用体验:
Gradle是一种先进的构建系统和高级构建工具包,允许通过插件创建自定义构建逻辑!
优点:
清单条目
通过DSL,可以配置以下清单条目:
构建变体
默认情况下,Android插件自动设置项目以构建应用程序的调试版本和发布版本。
依赖关系
如果您的模块依赖于本地文件系统中的二进制存档(如JAR文件),则可以在该模块的构建文件中声明这些依赖关系。
首先必须将存储库添加到列表中,然后以Maven或Ivy声明其工件的方式声明依赖项。