一、Android Studio版本,Android Gradle插件版本,Gradle版本
Android Studio 通过Android Gradle插件 使用 Gradle来构建代码;
Android Studio每次升级后, Android Gradle 插件自动更新,对应的Gradle版本也会变动;
因此会产生如下对应关系:
(1)Android Studio版本与Android Gradle插件版本对应关系
具体见官网描述:Android Gradle 插件版本说明 | Android 开发者 | Android Developers
如图所示
(2)Android Gradle 插件与Gradle版本对应关系
具体看官网描述:Android Gradle 插件版本说明 | Android 开发者 | Android Developers
如下图所示
(3)android studio Gradle插件配置位置
- 方式1:在项目根目录下build.gradle文件中进行配置
- 方式2:android studio中setting下project structure面板中project中设置
二、通过gradle-wrapper实现Gradle插件与Gradle版本适配
Gradle Wrapper 是 Gradle 的一种包装器,使得我们可以在不安装 Gradle 的情况下运行和构建我们的项目;
经常需要修改 gradle-wrapper.properties 配置文件 , 用于匹配 Android Gradle 插件版本 与 Gradle 版本 的对应关系 ;
(1)Gradle Wrapper 所在目录
gradle-wrapper.properties 文件通常位于项目根目录下的 /gradle/wrapper/ 目录中,是一个隐藏文件。为了避免误操作,建议不要直接修改该文件,而是通过 Android Studio 提供的 Gradle 配置界面来修改 Gradle Wrapper 的设置。
(2)gradle-wrapper.properties配置属性文件说明
gradle-wrapper.properties 文件的作用在于为 Gradle Wrapper 提供必要的配置信息,以便 Gradle Wrapper 自动下载、安装和配置 Gradle 运行环境。通过修改 gradle-wrapper.properties 文件中的设置,我们可以控制 Gradle 版本、下载源、存储路径等参数,以定制化 Gradle 构建过程和环境。
- distributionUrl:指定了 Gradle 发布版本的下载地址,Gradle Wrapper 将从该地址自动下载指定版本的 Gradle。
- distributionSha256Sum:指定了 distributionUrl 对应 Gradle 版本的 SHA-256 校验和,用于校验下载的 Gradle 是否完整且未被篡改。
- zipStoreBase和zipStorePath:指定了 Gradle Zip 包的存储路径,在第一次运行 Gradle Wrapper 时,Gradle 将会从 distributionUrl 下载 Gradle Zip 包,并解压到这个路径下。
- distributionType:指定了 Gradle 的分发类型,可选值有 "bin" 和 "all"(默认值)。
GRADLE_USER_HOME
没有配置的话,默认是 ~/.gradle
(3)解决gradle国内下载失败,离线安装包配置问题
如果:distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip
由于国内无法下载,可以通过迅雷(牛逼,浏览器下载不了,它可以),下载下来gradle-7.4-all.zip,可以自己放在电脑某个文件夹下。然后修改如下radle-wrapper.properties配置文件即可实现
#Sat Nov 12 21:00:23 CST 2022
distributionBase=GRADLE_USER_HOME
distributionUrl=file:///D:/GradleOffLinePackage/gradle-7.4-all.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
distributionType=all
(三)gradle构建目录
在android studio项目下gradle的目录
├── build.gradle
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
(1)build.gradle
build.gradle 是对某个项目的配置。配置 jar 依赖关系,定义或者引入 task 去完成项目构建。
(2)gradle-wrapper-properties
GRADLE_USER_HOME
没有配置的话,默认是 ~/.gradle
zipStoreBase
和 zipStorePath
定义了下载的 gradle (gradle-7.6-bin.zip) 存储的本地路径。distributionBase
和 distributionPath
定义下载的 gradle 解压的本地目录。
wrapper 定义项目依赖那个版本的 gradle,如果本地 distributionPath 没有对应版本的 gradle,会自动下载对应版本的 gradle。
gradle-wrapper.jar 会判断是否下载 wrapper 配置的 gradle,并且将传递参数给下载的 gradle,并运行下载的 gralde 进行构建项目。
(3)gradle.properties
主要用于配置构建过程中用到的变量值。也可以配置一些 gradle 内置变量的值,用于修改默认构建行为。
org.gradle.logging.level=quiet
org.gradle.caching=true
org.gradle.parallel=true
org.gradle.jvmargs=-Xms512m -Xmx2g -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.jvmargs
用来配置 Daemon 的 JVM 参数,默认值是 -Xmx512m "-XX:MaxMetaspaceSize=384m"
。
当我们的项目比较大的时候,可能会由于 JVM 堆内存不足导致构建失败,就需要修改此配置。org.gradle.logging.level
调整 gradle 的日志级别。参考 gradle logging 选择想要的日志级别。
(4)gradlew和gradlew.bat
gradlew
是 macos 和 linux 系统下。gradlew.bat
是 windows 系统下使用的
(5)settings.gradle
settings.gradle 主要用于配置项目名称,和包含哪些子项目。
也可以用于配置插件的依赖版本(不会应用到项目中去,除非项目应用这个插件)和插件下载的