前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android Studio 中的Gradle版本介绍

Android Studio 中的Gradle版本介绍

作者头像
zinyan.com
发布2023-07-13 15:14:12
1.1K0
发布2023-07-13 15:14:12
举报
文章被收录于专栏:zinyanzinyan

前言

如果你针对Android Studio中的Gradle插件有不懂。打开老项目的时候,经常由于Gradle的版本号问题造成项目无法编译。

不了解Project目录下build.gradle中的com.android.tools.build:gradle版本与gradle/wrapper/gradle-wrapper.properties 里面的版本号区别。

这两个插件的版本一旦不匹配上,还容易造成更多的编译错误。

但是这两个插件的版本号却不同步。

针对这个问题,我今天好好介绍介绍。

希望能够让大家明白这两个插件的区别以及对应关系。

说明

gradle 介绍

Gradle 不是Google开发的。Gradle是有专门的团队进行开发维护。并且完全开源的自动化构建工具。IDEA 默认集成了该工具。可以方便的帮我们将项目代码进行构建打包,是一个脚本工具。

Gradle官网:gradle.org

如果你想了解更多与gradle的相关资料,可以通过官网进行了解。

我们通常在build.gradle 下编辑输入的代码叫做groovy语言。如果想了解可以学习groovy语言的基本知识。

Android Gradle 插件

Android Studio 是采用Gradle 进行代码的打包编译以及构建项目的。

但是Gradle是一个开源的自动构建工具,是面向全平台的。所以Android 在基于Gradle进行了二次开发,整合了几项专门用于构建Android应用的功能。

而该工具命名为:com.android.tools.build:gradle:xxxx 。

所以,到这里大家理解两者关系了。

代码语言:javascript
复制
//这个地方是android 自己定制化Gradle的插件版本
classpath 'com.android.tools.build:gradle:3.6.4'


//gradle/wrapper/gradle-wrapper.properties  这个是系统独立的Gradle的版本号。
distributionUrl=https://downloads.gradle-dn.com/distributions/gradle-5.6.4-all.zip

所以,这两个的版本号不统一。

但是,AndroidGradle 是需要依赖于gradle的,所以两个之间的对应关系比较重要

版本对应

Android Gradle 插件版本

所需的 Gradle 版本

1.0.0 - 1.1.3

2.2.1 - 2.3

1.2.0 - 1.3.1

2.2.1 - 2.9

1.5.0

2.2.1 - 2.13

2.0.0 - 2.1.2

2.10 - 2.13

2.1.3 - 2.2.3

2.14.1 - 3.5

2.3.0+

3.3+

3.0.0+

4.1+

3.1.0+

4.4+

3.2.0 - 3.2.1

4.6+

3.3.0 - 3.3.3

4.10.1+

3.4.0 - 3.4.3

5.1.1+

3.5.0 - 3.5.4

5.4.1+

3.6.0 - 3.6.4

5.6.4+

4.0.0+

6.1.1+

4.1.0+

6.5+

4.2.0+

6.7.1+

7.0

7.0+

最新信息

由于以前两个插件的版本一直对应不上,容易造成大家的误解。Android Gradle的版本号 在Gradle发布7.0后,进行了同步。也就是我们在上面看到的。7.0之后就同步上了。两个版本号一致

Android Gradle 7.0+更新

但是从7.0 开始,Android 将会有很大的改变。

工具

最低版本

默认版本

Gradle

7.0.2

7.0.2

SDK Build Tools

30.0.2

30.0.2

NDK

不适用

21.4.7075529

JDK

11

11

也就是我们如果将Android Gradle 升级到7.0后,我们的Gradle必须要在7.0.2以上。并且jdk必须是11.而不再是jdk8了。

依赖项配置变更

  • compile 根据用例,该配置已被 apiimplementation替换。同样适用于 *Compile 变体,例如 debugCompile
  • provided 该配置已被 compileOnly替换。同样适用于 *Provided 变体,例如 releaseProvided
  • apk 该配置已被 runtimeOnly 替换。
  • publish 该配置已被runtimeOnly替换。

移除属性和Task

android.enableBuildCache 属性、android.buildCacheDir 属性移除。

cleanBuildCache 任务---我们在Gradle面板上将看不到这个Task任务了。

针对依赖库提高了lint性能检查

也就是我们在编译时针对我们依赖的其他库进行了更高的lint

代码语言:javascript
复制
android {
  ...
  lintOptions {
    checkDependencies true
  }
}

//如果你的项目是 build.gradle.kts。就用下面的配置
android {
  ...
  lint {
    isCheckDependencies = true
  }
}

针对缺少类警告

在进行编译时,R8编译器将会更精确的查找依赖项里面的定义或者引用的类是否存在。

不存在的时候会输出:R8: Missing class: java.lang.instrument.ClassFileTransformer

这样,我们就不用在运行时崩溃了才知道有哪些类没有被依赖了。

但我们要忽略该警告,可以通过在proguard-rules.pro 文件中,配置

代码语言:javascript
复制
-dontwarn java.lang.instrument.ClassFileTransformer

来告诉Gradle 忽略缺少类的警告。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 zinyan 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 说明
    • gradle 介绍
      • Android Gradle 插件
      • 版本对应
      • 最新信息
      • Android Gradle 7.0+更新
        • 依赖项配置变更
          • 移除属性和Task
            • 针对依赖库提高了lint性能检查
              • 针对缺少类警告
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档