• 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目录的结构,做了对应的说明。

    pFttN6K.png

    其中

    • 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插件开发_实现自动复制文件插件

  • 相关阅读:
    Springboot中slf4j日志的简单应用
    整型int的拼接和拆分
    C++继承
    SQL8 查找某个年龄段的用户信息
    车联网之电子围栏模型使用翻滚窗口【二十一】
    1、TypeScript介绍
    2022年SQL经典面试题总结(带解析)
    电气工程中matlab程序拉格朗日松弛算法
    说说HTTP 和 HTTPS 有什么区别?
    java计算机毕业设计社区老人健康服务跟踪系统源码+系统+数据库+lw文档+mybatis+运行部署
  • 原文地址:https://blog.csdn.net/EthanCo/article/details/136163403