Gradle对我来说有点困惑,对任何新的Android开发人员来说也是如此。谁能解释一下Android Studio中的Gradle是什么,它的目的是什么?为什么Android Studio中包含它?


当前回答

格拉德尔 = 时髦 + 摇篮

参考:Hans Dockter论坛评论

当它在Android Studio中被称为“Build”时,这种混淆是不必要的。

在开发社区中,我们喜欢给自己制造麻烦。

其他回答

定义:Gradle可以被描述为一种结构化的构建机制,它为开发人员提供了工具和灵活性来管理项目的资源,以创建更小的构建,针对特定配置的特定设备的特定需求


基本配置

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级别的特定设备生成构建。这有助于根据不同类型设备的需求在应用商店中部署产品。


好的参考

Vogella Tutorials

Gradle是一个高级的Android构建工具包,用于管理依赖关系,并允许您定义自定义构建逻辑。特征就像

自定义、配置和扩展构建过程。 使用同一个项目为应用程序创建多个具有不同功能的APK文件。 重用代码和资源。

参考

我将以尽可能简单的方式用Java来解释它。

假设我们有一个简单的hello world项目(HelloWorld.java)。为了运行项目,我们需要编译它(HelloWorld.class)。然后我们将在JVM (java虚拟机)中运行它。

编译代码的过程可以使用自带javac.exe (Java编译器命令)的JDK (Java开发工具包)完成。它将Java源文件(. Java)编译为字节码类文件(.class)。

使用所有.java源文件的列表调用javac.exe。例如,对于单个源文件

javac HelloWorld.java

编译多个Java源文件

javac Program1.java Program2.java Program3.java

这并不是很有趣,因为一旦你开始做大项目,你可能会开始使用第三方提供的功能(jar文件)。例如 编译一个依赖于外部库的源文件:

javac -classpath mail.jar EmailSender.java

编译一个依赖于外部多个库的源文件:(其中Myprogram.java是依赖于多个库的源文件)

javac -cp lib1.jar;lib2.jar;lib3.jar MyProgram.java

请记住,有时源文件依赖于100和1000多个库,这使得手动编译成为一项真正的艰苦工作。为了解决这个问题,我们有构建工具,例如Gradle, Maven(使编译过程没有错误,并且可以轻松完成多次)

像Gradle这样的内置工具的其他用途是

测试源代码很容易 打包您的应用程序的格式,以便它可以 发布和部署很容易

简短的回答

Gradle是一个构建系统。

长回答

在使用Android Studio之前,您的开发目的是使用Eclipse,很可能您不知道如何在没有Eclipse的情况下构建Android APK。

您可以在命令行上完成此操作,但必须了解每个工具(dx和AAPT)在SDK中的功能。 Eclipse通过为我们提供自己的构建系统,将我们从这些低级但重要的基本细节中拯救出来。

现在,你有没有想过为什么res文件夹和src文件夹在同一个目录中?

这就是构建系统出现的地方。构建系统自动获取所有源文件(.java或.xml),然后应用适当的工具(例如,获取.java类文件并将其转换为.dex文件),并将所有这些文件组合成一个压缩文件-我们心爱的APK。

这个构建系统使用了一些约定:一个例子是指定包含源文件(在Eclipse中是\src文件夹)或资源文件(在Eclipse中是\res文件夹)的目录。

现在,为了自动化所有这些任务,必须有一个脚本;您可以使用Linux中的shell脚本或Windows中的批处理文件语法编写自己的构建系统。明白了吗?

Gradle是另一个构建系统,它从其他构建系统中获取最好的功能,并将它们组合成一个。它是基于它们的缺点而改进的。它是一个基于jvm的构建系统。这意味着你可以用Android Studio使用的Java编写自己的脚本。

Gradle很酷的一点是它是一个基于插件的系统。这意味着如果你有自己的编程语言,你想要自动化从源代码构建一些包(输出像Java的JAR文件)的任务,那么你可以用Java或Groovy(或Kotlin,见这里)编写一个完整的插件,并将其分发到世界各地。

谷歌为什么使用它?

谷歌看到了市场上最先进的构建系统之一,并意识到您可以编写自己的脚本,而不需要学习Groovy或任何其他新语言。所以他们为Gradle编写了Android插件。

你一定见过那建筑。项目中的Gradle或build.gradle.kts文件。在这里您可以编写脚本来自动化您的任务。您在这些文件中看到的代码是Groovy或Kotlin代码。如果你写System.out。println(“你好Gradle !”);然后它会打印在你的控制台上。

在构建脚本中可以做什么?

一个简单的例子是,在实际构建过程发生之前,您必须将一些文件从一个目录复制到另一个目录。Gradle构建脚本可以做到这一点。

Gradle是一个自动化的构建工具包,可以集成到许多不同的环境中,不仅仅是Android项目。

下面是你可以用Gradle做的一些事情。

新建项目所需的最小配置,因为Gradle有Android Studio项目的默认配置。 依赖声明。您可以声明托管在本地或远程服务器上的依赖JAR文件或库文件。 Gradle自动从项目的源代码生成一个测试目录和一个测试APK文件。 如果您添加了所有必要的信息,如keyPassword和keyAlias,到您的Gradle构建文件中,您可以使用Gradle生成签名APK文件。 Gradle可以用不同的包生成多个APK文件,并从单个模块构建配置。