Android Gradle 开发与应用 (一) : Gradle基础

1. Gradle是什么

Gradle是一个通用的构建工具,支持诸多主要的 IDE,包括 Android Studio、IntelliJ IDEA、Visual Studio 等

  • Gradle 的底层实现(核心引擎和框架)其实是用 Java 编写的
  • 开发者通常使用 Groovy 或 Kotlin 来编写构建脚本

1.1 那么为什么Gradle的底层不使用Groovy进行开发,而是使用Java ?

  • Java具有更被广泛验证的稳定性,生态系统庞大且成熟,拥有大量的开源库和工具
  • Java是静态语言,具有更好的可维护性,尤其是在一个需要长期维护的大型开源项目时
  • 随着时间推移,Gradle还引入了Kotlin DSL作为构建脚本的开发,而底层仍然使用Java,这样可以确保无论脚本层如何变化,核心引擎的性能和表现都能一致

2. Gradle和Ant、Maven

  • Ant : 2000年由Apache推出的纯Java编写的构建工具,通过build.xml文件管理项目
  • Maven : 2004年Apache推出的使用pom.xml管理项目的构建工具
    • 缺点 : 配置文件编写不够灵活,构建过程僵化
  • Gradle : 2012年Google推出的权限项目构建工具,集合了Ant和Maven各自的优势。
    • 相对学习成本高

3. Gradle安装包

在Gradle中,srcbinall是不同类型的发布版本或分发方式,这些版本在内容和使用上有所不同。

Gradle的所有安装包都可以在官网上下载到 : Gradle Release,以下是它们之间的主要区别:

  • src(源码版):包含了Gradle的完整源代码
  • bin(二进制版):包含了Gradle的可运行程序,但不包含源码和文档
  • all(完整版):包含了Gradle的完整发布,包括可运行程序、用户文档和源码

4. Gradle项目结构

Android项目的目录结构就是继承自Gradle的,所以我们会感觉Gradle的项目结构非常的熟悉。

下面这张图,我对Gradle目录的结构,做了对应的说明。

其中

  • gradlew.bat 这个是在windows下的可执行脚本
  • gradlew是在其他系统下的可执行脚本

无论是gradlew.bat还是gradlew实际上都是执行的wrapper文件夹底下指定版本的Gradle的指令

详见 Gradle Directories

5. Gradle Wrapper

Gradle的项目中,都有gradle-wrapper.jargradlew.bat脚本。

假设我们把这个项目复制到没有安装任何Gradle的机器上,会发生什么 ?

会自动去下载指定的gradle。

可以看一下脚本里的源码,本质上会去加载并运行gradle-wrapper.jargradle-wrapper.jar 会把gradle指定版本给下载下来后,然后用这个指定gradle版本来执行构建。

gradlew wrapper给上传上去,以保证任何人将项目源码下载下来之后,都可以和你一样的gralde版本去构建,以避免版本不一致带来的问题。

6. GradleUserHome

GradleUserHome是Gradle构建工具的一个重要属性,它是Gradle的工作及缓存仓库文件目录。如果不进行特别配置,GradleUserHome的默认路径通常是用户目录下的".gradle"文件夹 (C:\Users\我的用户名\.gradle)。在这个目录下,Gradle会下载或缓存大量文件。

由于GradleUserHome占用存储空间比较大,我们可以配置全局的环境变量,将GradleUserHome设置到非系统盘中,从而减少C盘的磁盘空间占用。

如果你把一个gradle的脚本放在init.gradle这个目录,那么这个脚本就会对你机器上所有的gradle构建生效,在你的gradle构建之前,它就会先执行一下。比如说执行一个全局的仓库替换(国内下载很慢)。

但是init.gradle 文件和项目的 settings.gradle 或 settings.gradle.kts 文件不同。settings.gradle 文件是用于配置项目设置(如项目名称、包含的模块等)的,而 init.gradle 是全局的,并且针对Gradle守护进程。

在大多数情况下,你不需要手动创建或编辑 init.gradle 文件,除非你有特定的全局配置需求。如果你确实需要修改它,确保你了解这些更改的影响,并在必要时进行充分的测试。

6.1 gradle-wrapper.properties文件解读

gradle项目的wrapper目录下,有一个``文件,这个文件用来配置Gradle具体的版本和下载地址以及存放路径

  • zipStore : 压缩包存放的目录
  • distribution : 压缩包解压后存放的目录
  • distributionUrl : Gradle的版本及下载地址,默认的是国外的下载地址,可能下载速度比较慢,可以将URL改为国内的 ,比如https://mirrors.cloud.tencent.com/gradle/gradle-8.2-bin.zip

7. Gradle相关的其他文章

Android Gradle开发与应用 (一) : Gradle基础
Android Gradle开发与应用 (二) : Groovy基础语法
Android Gradle插件开发_实现自动复制文件插件

相关推荐
帅得不敢出门4 小时前
安卓设备adb执行AT指令控制电话卡
android·adb·sim卡·at指令·电话卡
我又来搬代码了5 小时前
【Android】使用productFlavors构建多个变体
android
德育处主任7 小时前
Mac和安卓手机互传文件(ADB)
android·macos
芦半山7 小时前
Android“引用们”的底层原理
android·java
迃-幵8 小时前
力扣:225 用队列实现栈
android·javascript·leetcode
大风起兮云飞扬丶8 小时前
Android——从相机/相册获取图片
android
Rverdoser8 小时前
Android Studio 多工程公用module引用
android·ide·android studio
aaajj8 小时前
[Android]从FLAG_SECURE禁止截屏看surface
android
@OuYang8 小时前
android10 蓝牙(二)配对源码解析
android
Liknana9 小时前
Android 网易游戏面经
android·面试