Gradle对我来说有点困惑,对任何新的Android开发人员来说也是如此。谁能解释一下Android Studio中的Gradle是什么,它的目的是什么?为什么Android Studio中包含它?
当前回答
下面是Gradle是什么以及如何在Android Studio中使用它的详细解释。
探索Gradle文件
当你在Android Studio中创建一个项目时,build系统 自动生成所有必要的Gradle构建文件。
Gradle构建文件
Gradle构建文件使用领域特定语言或DSL进行定义 自定义构建逻辑和与android特定的交互 Gradle的Android插件元素。 Android Studio项目由一个或多个模块组成,这些模块是可以独立构建、测试和调试的组件。每个模块都有自己的构建文件,因此每个Android Studio项目都包含两种Gradle构建文件。 顶级构建文件:在这里您可以找到组成项目的所有模块的通用配置选项。 模块级构建文件:每个模块都有自己的Gradle构建文件,其中包含模块特定的构建设置。您将花费大部分时间编辑模块级构建文件,而不是项目的顶级构建文件。
来看看这些构造。打开Android Studio的项目面板(通过选择项目选项卡),展开gradle Scripts文件夹。 Gradle Scripts文件夹中的前两项是项目级和模块级Gradle构建文件
顶级Gradle构建文件
每个Android Studio项目都包含一个单一的顶级Gradle构建文件。这个构建。gradle文件是出现在gradle Scripts文件夹中的第一个项目,并且清楚地标记为项目。
大多数情况下,您不需要对该文件进行任何更改,但是 理解它的内容和它所扮演的角色仍然是有用的 在您的项目中。
模块级Gradle构建文件
除了项目级的Gradle构建文件外,每个模块都有自己的Gradle构建文件。下面是一个带注释的基本模块级Gradle构建文件。
其他Gradle文件
除了构建。gradle Scripts文件夹包含一些其他gradle文件。大多数情况下,你不需要手动编辑这些文件,因为当你对项目进行任何相关更改时,它们会自动更新。但是,最好了解这些文件在项目中所扮演的角色。
gradle-wrapper。属性(Gradle版本)
这个文件允许其他人构建你的代码,即使他们的机器上没有安装Gradle。该文件检查是否安装了正确的Gradle版本,并在必要时下载必要的版本。
settings.gradle
该文件引用组成项目的所有模块。
gradle。物业(项目物业)
该文件包含整个项目的配置信息。 默认情况下为空,但可以对其应用广泛的属性 通过将它们添加到此文件来创建项目。
当地。属性(SDK Location)
这个文件告诉Android Gradle插件在哪里可以找到你的Android SDK安装。
注意:当地。属性包含特定于Android SDK本地安装的信息。这意味着您不应该将该文件置于源代码控制之下。
建议阅读- Tutsplus教程
由此我对Gradle有了一个清晰的认识。
其他回答
下面是Gradle是什么以及如何在Android Studio中使用它的详细解释。
探索Gradle文件
当你在Android Studio中创建一个项目时,build系统 自动生成所有必要的Gradle构建文件。
Gradle构建文件
Gradle构建文件使用领域特定语言或DSL进行定义 自定义构建逻辑和与android特定的交互 Gradle的Android插件元素。 Android Studio项目由一个或多个模块组成,这些模块是可以独立构建、测试和调试的组件。每个模块都有自己的构建文件,因此每个Android Studio项目都包含两种Gradle构建文件。 顶级构建文件:在这里您可以找到组成项目的所有模块的通用配置选项。 模块级构建文件:每个模块都有自己的Gradle构建文件,其中包含模块特定的构建设置。您将花费大部分时间编辑模块级构建文件,而不是项目的顶级构建文件。
来看看这些构造。打开Android Studio的项目面板(通过选择项目选项卡),展开gradle Scripts文件夹。 Gradle Scripts文件夹中的前两项是项目级和模块级Gradle构建文件
顶级Gradle构建文件
每个Android Studio项目都包含一个单一的顶级Gradle构建文件。这个构建。gradle文件是出现在gradle Scripts文件夹中的第一个项目,并且清楚地标记为项目。
大多数情况下,您不需要对该文件进行任何更改,但是 理解它的内容和它所扮演的角色仍然是有用的 在您的项目中。
模块级Gradle构建文件
除了项目级的Gradle构建文件外,每个模块都有自己的Gradle构建文件。下面是一个带注释的基本模块级Gradle构建文件。
其他Gradle文件
除了构建。gradle Scripts文件夹包含一些其他gradle文件。大多数情况下,你不需要手动编辑这些文件,因为当你对项目进行任何相关更改时,它们会自动更新。但是,最好了解这些文件在项目中所扮演的角色。
gradle-wrapper。属性(Gradle版本)
这个文件允许其他人构建你的代码,即使他们的机器上没有安装Gradle。该文件检查是否安装了正确的Gradle版本,并在必要时下载必要的版本。
settings.gradle
该文件引用组成项目的所有模块。
gradle。物业(项目物业)
该文件包含整个项目的配置信息。 默认情况下为空,但可以对其应用广泛的属性 通过将它们添加到此文件来创建项目。
当地。属性(SDK Location)
这个文件告诉Android Gradle插件在哪里可以找到你的Android SDK安装。
注意:当地。属性包含特定于Android SDK本地安装的信息。这意味着您不应该将该文件置于源代码控制之下。
建议阅读- Tutsplus教程
由此我对Gradle有了一个清晰的认识。
Gradle是一个构建系统。构建系统是设计用于自动化程序编译过程的软件工具。构建系统有各种形式,并用于各种软件构建任务。而他们的主要目标是有效地创建可执行文件。
另一个相关的术语是构建自动化,它是自动化创建软件构建的过程,以及相关的过程,包括:将计算机源代码编译成二进制代码,打包二进制代码,以及运行自动化测试。
其他语言的类似构建系统如下(见完整列表):
Apache Ant和Apache Maven - Java sbt -用于Scala (Play框架等) 基于python的构建工具 Rake (Apache Builder) - Ruby Leiningen for Clojure
Android Studio构建系统基于Gradle,并且Android Gradle插件添加了几个特定于构建Android应用程序的特性。虽然Android插件通常是与Android Studio同步更新的,但插件(以及Gradle系统的其余部分)可以独立于Android Studio运行,并单独更新。
有关详情,请参阅:
gradle-plugin版本 gradle网站
简单来说,Gradle是Android Studio为了实现两个重要过程而提供的工具:
构建我们的项目 将AndroidManifest.xml、res文件夹和二进制代码打包到一个名为APK的特殊格式压缩文件中
我认为这背后的问题是为什么Android Studio / Gradle的体验如此糟糕。
典型的Clojure体验:
下载project.clj中列出的依赖项。 Leiningen通过Clojars和Maven获得依赖关系。 项目编译。
典型的Android Studio / Gradle体验:
“导入我的Eclipse项目”。 好的,项目导入。 Gradle正在做自己的事情…等待……等待……等待……Gradle已经完成了。 编译…不能编译,因为我不知道X是什么/找不到Y库。
我不确定这完全是Gradle的错。但是“从Eclipse项目导入”似乎很不靠谱。对于Gradle的所有所谓的复杂性和构建系统的优点,Android Studio似乎并没有很好地从Eclipse导入构建依赖项或构建过程。
它不会告诉你什么时候导入完整的依赖关系图失败了。Android Studio没有提供任何有用的帮助或提示来解决这个问题。它没有告诉您可以手动查看Eclipse文件夹中的哪个位置。它不会告诉你哪个库好像不见了。或者帮助您搜索Maven等。
在2016年,像Leiningen / Clojars, Node.js的npm, Python的pip, Debian的apkg(我相信其他语言和系统的许多类似的包管理器)都工作得很好……缺少依赖关系已成为过去。
Android除外。Android Studio现在是唯一一个让我感到依赖缺失的地方。
我倾向于说这是谷歌的错。当他们轻率地决定从Eclipse转向Android Studio / Gradle而没有产生一个强大的转换过程时,他们破坏了Android生态系统(以及数以千计的现有Android项目/在线教程)。那些在Eclipse中工作的项目的人并没有将它们适应Android Studio(可能是因为这对他们来说很痛苦)。试图在Android Studio中使用这些项目的人也遇到了同样的问题。
无论如何,如果Gradle是一个超级强大的构建系统,为什么我还在SDK管理器中管理大量其他依赖?为什么一个需要NDK的项目不能在它的Gradle文件中指定这一点,以便在需要时自动安装和构建?为什么NDK是特别的?目标平台也是如此?为什么我要显式地在IDE中安装它们,而不是只是检查我的项目,并在幕后为我排序?
推荐文章
- 警告:API ' variable . getjavacompile()'已过时,已被' variable . getjavacompileprovider()'取代
- ionic 2 - Error在Android Studio中找不到Gradle的安装版本
- 安装APK时出现错误
- Jersey在未找到InjectionManagerFactory时停止工作
- 如何生成字符串类型的buildConfigField
- 在Android Studio中创建aar文件
- Gradle代理配置
- 为什么构建类型与产品风味不同?
- 调试在哪里。Android Studio中的密钥存储库
- 错误:在Android SDK中找不到gradle包装器。可能需要更新你的Android SDK - Android
- Android Studio, logcat在应用程序关闭后清理
- Gradle替代mvn安装
- 有Grunt生成index.html不同的设置
- Android Studio中的。iml文件是什么?
- 为什么要把Gradle Wrapper提交给VCS?