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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/491139.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QC七大工具

目录 1、检查表: 2、层别法: 3、柏拉图: 4、因果图: 5、散布图: 6、直方图: 7、控制图: QC是英文Quality Control的简称,中文意思是质量控制。在ISO9000:2015对质量管理&…

2-23 switch、JVM内存模型、垃圾回收机制、this、static、变量的分类

文章目录 switch 实现成绩评级JVM内存模型概念栈的特点堆的特点 垃圾回收机制通用的分代垃圾回收机制三种清理算法垃圾回收过程垃圾回收常见的两种检测引用算法内存泄露常见原因 this的用法创建对象的四步 static 静态特点 变量的分类和作用域import switch 实现成绩评级 switc…

golang通过http访问外部网址

不同项目之前,通过http访问,进行数据沟通 先设定一个接口,确认外部能访问到 PHP写一个接口 public function ceshi_return() {$data $this->request->param();$id $data[id];$res Db::name(user)->field(id,status,price,name)->where([id>$id])->find…

JSTL标签

JSTL标签 一、什么是JSTL标签: 随着J2EE瘦客户机技术JavaServer Pages(JSP)在过去几年中的流行,开发人员已经创建了许多自定义的JSP标记库。虽然很多标记库是为实现不同目标的而编写的,但它们往往也对迭代、条件及其它通用操作都提供了类似…

dolphinscheduler单机版部署教程

文章目录 前言一、安装准备1. 安装条件2. 安装jdk3. 安装MySQL 二、安装dolphinscheduler1. 下载并解压dolphinscheduler2. 修改配置文件2.1 修改 dolphinscheduler_env.sh 文件2.2 修改 application.yaml 文件 3. 配置mysql数据源3.1 修改MySQL安全策略3.2 查看数据库3.3 创建…

wpf 简单实验 数据更新 列表更新

1.概要 1.1 需求 一个列表提供添加修改删除的功能,添加和修改的内容都来自一个输入框 1.2 要点 DisplayMemberPath"Zhi"列表.ItemsSource datalist;(列表.SelectedItem ! null)(列表.SelectedItem as A).Zhi 内容.Text;datalist.Remove((列表.Selec…

JDK8新特性全解析:Java8变革之旅

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

第10届蓝桥杯Scratch图形化编程 选拔赛初级组编程题1:小猫走城堡

准备工作: 导入育最库中的“Castle 3 小猫从坐标点(-165,-93)出发向城堡走去。随着位置的移动,角色大小逐渐变小,最后在城堡前消失。注意1.角色大小在逐渐变化,运行结束再次点击绿旗,程序应还能再次扶行。2.角色应该是…

C++初阶 | [八] (下) vector 模拟实现

摘要:vector 模拟实现讲解(附代码示例),隐藏的浅拷贝,迭代器失效 在进行 vector 的模拟实现之前,我们先粗略浏览一下 stl_vector.h 文件中的源码来确定模拟实现的大体框架。 这里提供一些粗略浏览源码的技巧…

web项目部署 一篇就搞定

web部署的方式有很多,根据开发方式不同,部署方式也不同。最通用是docker部署,这个想必大家都熟悉。我们今天说另外一种。 部署过程 1、验证Jdk是否安装成功 2、验证Tomcat是否安装成功 3、验证Navicat 是否能连上数据库 4、创建数据库并…

谁是单身狗?——C语言刷题

创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 单身狗1 题述 在一个整型数组中,只有一个数字出现一次,其他数组都是成对出现的,请找出那个只出现一次的数字。 例如: 数组中有:1 2 3 4 5 1 2 3 4&a…

SQL 中如何实现多表关联查询?

阅读本文之前请参阅----MySQL 数据库安装教程详解(linux系统和windows系统) 在SQL中,多表关联查询是通过使用JOIN操作来实现的,它允许你从两个或多个表中根据相关列的值来检索数据。以下是几种常见的JOIN类型: …