Gradle对我来说有点困惑,对任何新的Android开发人员来说也是如此。谁能解释一下Android Studio中的Gradle是什么,它的目的是什么?为什么Android Studio中包含它?
当前回答
简单来说,Gradle是Android Studio为了实现两个重要过程而提供的工具:
构建我们的项目 将AndroidManifest.xml、res文件夹和二进制代码打包到一个名为APK的特殊格式压缩文件中
其他回答
Gradle使复杂的Android项目的构建自动化成为可能,这些项目包含来自多个源、项目、库等的数万行代码。它可以根据大量的配置规范有条件地生成多个优化的apk -如果你感兴趣,其他答案提供了Gradle这方面的更多细节。
然而,如果你是Android开发的新手,Gradle在99%的情况下会阻止你的项目构建。这是一个不可思议的复杂系统,有效地混淆了Android构建过程,并基本上使它无法提供给没有经验的开发人员,即为了构建一个简单的入门级Android应用程序,毫无戒心的新手可能需要学习和理解许多他们没有讨价讨价的东西,例如:
Android APK结构和生态系统 Android工作室 Java类路径和依赖项 Groovy Gradle构建脚本 许多其他复杂而有趣的技术
所有这些对Android开发者来说都是有趣和有用的,但它们并不简单,而且是一个巨大的入门障碍。我怀疑,促使OP提出这个问题的原因是,在花了太长时间试图构建一个简单的应用程序,却不断受到Gradle的阻挠后,新手开发者不可避免地会感到沮丧。所有这些技术都有大量的高技术性文档,这反而加剧了这个问题。同样,对于大量的开发需求,Gradle是多余的。
另一种选择是编写一个shell脚本,通过自动化Android SDK中可用的工具来构建项目。这种方法的优点有很多,对于初学者来说,这可能是学习和理解构建过程和Android生态系统的最佳方法,它允许你完全控制应用的构建方式。然而,这种方法更适合那些无可救药的技术迷,而不是那些没有经验的新手。
值得注意的是(如果有的话请告诉我),它是一个入门级的轻量级IDE,具有较少的功能集,同时简化了构建过程,而不模糊它(所以不是Netbeans或Eclipse),它可能仍然使用Gradle (Ant的问题是什么)。它可以很容易地生成符合一些常见配置的apk,并使用一个可以演变为完整的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项目。
下面是你可以用Gradle做的一些事情。
新建项目所需的最小配置,因为Gradle有Android Studio项目的默认配置。 依赖声明。您可以声明托管在本地或远程服务器上的依赖JAR文件或库文件。 Gradle自动从项目的源代码生成一个测试目录和一个测试APK文件。 如果您添加了所有必要的信息,如keyPassword和keyAlias,到您的Gradle构建文件中,您可以使用Gradle生成签名APK文件。 Gradle可以用不同的包生成多个APK文件,并从单个模块构建配置。
https://www.slideshare.net/AshifShaikh3/graddle
Gradle帮助我们管理Android的生态系统,比如库、代码版本、版本名和应用id。为了找到一个应用,Gradle添加了依赖项。远程基地,2。当地的基地。
定义: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
推荐文章
- 警告: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?