Gradle对我来说有点困惑,对任何新的Android开发人员来说也是如此。谁能解释一下Android Studio中的Gradle是什么,它的目的是什么?为什么Android Studio中包含它?
当前回答
定义: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
其他回答
搜索结果
来自网络的特色片段
Android |构建。Gradle。
Gradle是一个构建系统(开源),用于自动化构建、测试、部署等. ...例如,将一些文件从一个目录复制到另一个目录的简单任务可以在实际构建过程发生之前由Gradle构建脚本执行。
我认为这背后的问题是为什么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中安装它们,而不是只是检查我的项目,并在幕后为我排序?
Gradle和Android
Gradle是一个开源的构建自动化工具。Gradle支持Java和针对Android的Kotlin
source files -> build tools -> output file(.apk, .jar, .aar ...)
你可以使用更多的低级构建工具,如javac, DX, D8[About], aapt[About], sign tools…
Gradle是更高级的工具,它可以在引擎盖下完成所有这些工作。它还有以下优点:
依赖管理器(约) 在Groovy或Kotlin上使用领域特定语言(DSL)来公开当前设置或自定义/扩展构建过程。例如,您可以编写一些任务,并通过任何项目共享它们
[格拉德尔 vs 格拉德卢]
作者@Brian Gardner:
Gradle是一个用于编程项目的广泛的构建工具和依赖管理器。它有一种基于Groovy的领域特定语言。Gradle还为多种类型的项目提供了基于约定的构建支持,包括Java、Android和Scala。
Gradle的特点:
依赖关系管理 从Gradle中使用Ant Gradle插件 Java插件 Android插件 多项目构建
Gradle是一个高级的Android构建工具包,用于管理依赖关系,并允许您定义自定义构建逻辑。特征就像
自定义、配置和扩展构建过程。 使用同一个项目为应用程序创建多个具有不同功能的APK文件。 重用代码和资源。
参考
推荐文章
- 如何同步项目到GitHub与Android工作室?
- Gradle构建脚本依赖项
- 我怎么能修复“意外元素<查询>发现<manifest>”错误?
- Android Studio在哪里保存ProGuard映射文件?
- 如何确定Gradle的版本?
- 在android studio中不能小写按钮文本
- Android Studio突然无法解析符号
- 文件google-services错误。模块根文件夹中缺少Json。谷歌服务插件没有它就不能正常工作。
- Android Studio缺少必要的插件org.jetbrains.android
- 没有找到Gradlew命令?
- 无法找到com.google.android.gms:play-services:3.1.59 3.2.25 4.0.30 4.1.32 4.2.40 4.2.42 4.3.23 4.4.52 5.0.77 5.0.89 5.2.08 6.1.11 6.1.71 6.5.87
- 颤振插件未安装错误;当运行'扑动医生'时
- .dex文件中方法引用的数量不能超过64k API 17
- 控制jar工件的Maven最终名称
- 如何在Android项目中使用ThreeTenABP