[AS/Android Studio] Gradle Plugin Version 和 Gradle Version 的版本对应关系-程序员宅基地

技术标签: gradle  java  记录  android  android studio  

Android Gradle 插件版本说明

在更新 Android Studio 时,您可能会收到一并将 Gradle
更新为最新可用版本的提示。您可以选择接受该更新,也可以根据项目的构建要求手动指定版本。


下表列出了各个 Android Gradle 插件版本所需的 Gradle 版本。为了获得最佳性能,您应使用 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+
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+
7.1 / 7.1.2 7.2+
7.2 7.3+
7.3 / 7.3.0 7.4+

问题

更新时如果出现类似的错误,可以参考以下解决办法

在这里插入图片描述

解决办法

重新打开设置Gradle的页面,以7.1版本为例,找到7.1,改为7.1.2或者点击右侧下拉时,会出现当前版本可用的完整版本号。

修改前

在这里插入图片描述

修改后

在这里插入图片描述
最后点击 File - Sync Project with Gradle Files 重新编译以下Gradle
在这里插入图片描述

或者

在这里插入图片描述

更新 Gradle

在更新 Android Studio 时,您可能会收到将 Android Gradle 插件自动更新为最新可用版本的提示。您可以选择接受该更新,也可以根据项目的构建要求手动指定版本。


您可以在 Android Studio 的 File > Project Structure > Project 菜单中指定插件版本,也可以在顶
级 build.gradle 文件中进行指定。该插件版本将用于在相应 Android Studio 项目中构建的所有模块。

以下示例从 build.gradle 文件中将插件的版本设置为 4.0.0:

buildscript {
    
    repositories {
    
        // Gradle 4.1 and higher include support for Google's Maven repo using
        // the google() method. And you need to include this repo to download
        // Android Gradle plugin 3.0.0 or higher.
        google()
        ...
    }
    dependencies {
    
        classpath 'com.android.tools.build:gradle:4.0.0'
        //7.0版本的引用
        //classpath 'com.android.tools.build:gradle:7.0.0'
    }
}

注意:不应在版本号中使用动态依赖项(如
‘com.android.tools.build:gradle:2.+’),使用此功能可能会导致意外的版本更新和难以解析版本差异。

**
如果指定的插件版本尚未下载,则 Gradle 会在您下次构建项目时进行下载;或者,您也可以在 Android Studio 菜单栏中依次点击 Tools > Android > Sync Project with Gradle Files 进行下载。

您可以在 Android Studio 的 File > Project Structure > Project 菜单中指定 Gradle
版本,也可以通过在 gradle/wrapper/gradle-wrapper.properties 文件中修改 Gradle
分发引用来指定。

以下示例在 gradle-wrapper.properties 文件中将 Gradle 的版本设置为 6.1.1 或者 7.0.0。

...
distributionUrl = https\://services.gradle.org/distributions/gradle-6.1.1-all.zip
//7.0版本
//distributionUrl = "https\://services.gradle.org/distributions/gradle-7.0.0-all.zip"
...

关于7.0版本编号变更(2020 年 11 月)

我们将更新 Android Gradle 插件 (AGP) 的版本号,以使其更接近底层 Gradle 构建工具。

重要变更如下:

AGP 现在将使用语义版本控制,并且重大变更将在主要版本中发布。

每年将发布一个 AGP 主要版本,与 Gradle 主要版本保持一致。

AGP 4.2 之后的版本为版本 7.0,并且会要求升级到 Gradle 7.x 版。AGP 的每个主要版本都会要求在底层 Gradle 工具中进行主要版本升级。

API 的弃用将提前大约一年进行,同时提供替换功能。废弃的 API 将在大约一年后的下次重大更新期间移除。

1.兼容性

最低版本 默认版本 备注
Gradle 7.0.2 7.0.2 如需了解详情,请参阅更新 Gradle。
SDK Build Tools 30.0.2 30.0.2 安装或配置 SDK Build Tools。
NDK 不适用 21.4.7075529 安装或配置其他版本的 NDK。
JDK 11 11 如需了解详情,请参阅设置 JDK 版本。

2.需要 JDK 11 才能运行 AGP 7.0
使用 Android Gradle 插件 7.0 构建应用时,现在需要 JDK 11 才能运行 Gradle。Android Studio Arctic Fox 捆绑了 JDK 11,并将 Gradle 配置为默认使用 JDK 11,这意味着大多数 Android Studio 用户不需要对项目进行任何配置更改。

如需手动设置 JDK 版本供 Android Studio 中的 AGP 使用,您需要使用 JDK 11 或更高版本。

如果使用的是独立于 Android Studio 的 AGP,请将 JAVA_HOME 环境变量或 -Dorg.gradle.java.home 命令行选项设置为您的 JDK 11 安装目录,以此升级 JDK 版本。

3.Lint 分析任务现在可缓存
AndroidLintAnalysisTask 现在与 Gradle 构建缓存兼容。如果您通过在 gradle.properties 文件中设置 org.gradle.caching=true 来启用构建缓存,lint 分析任务将尽可能从构建缓存中获取其输出。

使用 Android Gradle 插件运行 lint 时,lint 分析任务通常是最大的瓶颈,因此在许多情况下,启用构建缓存可以提高 lint 运行速度。您应该会看到显著的性能提升,例如,如果您有多模块项目,并在使用 CI 服务器运行 lint 之前清理了构建目录。

4.C/C++ 模块现在可引用同一项目中的其他 C/C++ 模块
现在,包含 C/C++ 代码的 Gradle Android 模块可设置为引用其他 Gradle 模块中的头文件和库代码。Prefab 协议用于在 Gradle 模块之间传递头文件和库。

要求

  • 使用方模块必须为 CMake,而非 ndk-build。对 ndk-build 的支持将需要未来 NDK
    更新。发布方模块可以是 CMakendk-build
  • 使用方模块必须在 build.gradle 文件中启用 prefab。
android {
    
  buildFeatures {
    
    prefab true
  }
}
  • 发布方模块必须在 build.gradle 文件中启用 prefabPublishing。
android {
    
  buildFeatures {
    
    prefabPublishing true
  }
}
  • 使用方模块必须通过在 build.gradle 文件的 dependencies 代码块中添加一行代码来引用发布方模块。例如:
dependencies {
    
  implementation project(':mylibrary')
}
  • 发布方模块必须使用 prefab 部分公开软件包。例如:
android {
    
  prefab {
    
    mylibrary {
    
      libraryName "libmylibrary"
      headers "src/main/cpp/include"
    }
  }
}
  • 使用方模块的 CMakeLists.txt 文件可以使用 find_package() 来查找提供方模块发布的软件包。例如:
find_package(mylibrary REQUIRED CONFIG)
target_link_libraries(
        myapplication
        mylibrary::mylibrary)
  • 整个应用必须有一个 STL。例如,使用方模块和发布方模块都可以使用 C++ 共享 STL。
   android {
    
defaultConfig {
    
        externalNativeBuild {
    
          cmake {
    
            arguments '-DANDROID_STL=c++_shared'
          }
        }
      }
    }

如需详细了解如何使用 AGP 配置原生 AAR 使用方和提供方,请参阅原生依赖项与 AGP。

5.settings.gradle 文件中的代码库设置
在 Android Studio Bumblebee 中创建新项目时,顶层 build.gradle 文件包含 plugins 代码块,后跟用于清理构建目录的代码:

plugins {
    
    id 'com.android.application' version '7.1.0-beta02' apply false
    id 'com.android.library' version '7.1.0-beta02' apply false
    id 'org.jetbrains.kotlin.android' version '1.5.30' apply false
}

task clean(type: Delete) {
    
  delete rootProject.buildDir
}
  • 以前位于顶级 build.gradle 文件中的代码库设置现在位于 settings.gradle 文件中:
pluginManagement {
    
  repositories {
    
    gradlePluginPortal()
    google()
    mavenCentral()
  }
}

dependencyResolutionManagement {
    
  repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
  repositories {
    
    google()
    mavenCentral()
  }
}
rootProject.name = 'GradleManagedDeviceTestingNew'
include ':app'

模块级 build.gradle 文件未更改。因此,请使用顶级 build.gradle 文件和 settings.gradle 文件定义将应用于项目中所有模块的 build 配置,或定义适用于 Gradle 本身的代码库和依赖项;使用模块级 build.gradle 文件定义特定于项目中的给定模块的 build 配置。


官方说明地址

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u013599928/article/details/113595637

智能推荐

JAVA开发Web Service几种框架介绍-程序员宅基地

文章浏览阅读68次。郑重声明:此文为转载来的,出处已不知了,侵告删。  在讲Web Service开发服务时,需要介绍一个目前开发Web Service的几个框架,分别为Axis,axis2,Xfire,CXF以及JWS(也就是前面所述的JAX-WS,这是Java6发布所提供的对 Web Service服务的一种实现。)前面几项都为开源项目,而其中又以axis2与cxf所最为常用,Axis与XFir..._java开发使用的几种server的名称

C/C++:编译全过程——预处理、编译、汇编、链接(包含预处理指令:宏定义,文件包括、条件编译)_怎么在devc++里面把c文件变成汇编语言-程序员宅基地

文章浏览阅读1.4k次。一、前言 C/C++的编译过程包含了四个步骤: 1. 预处理(Preprocessing) 2. 编译(Compilation) 3. 汇编(Assemble) 4..链接(Linking)二、预处理 预处理阶段主要处理一些预处理指令,比如文件包括、宏定义、条件编译。1.文件包括 文件包括就是将所有的#include..._怎么在devc++里面把c文件变成汇编语言

Pytorch深度学习实践第十二讲 RNN 课后1(LSTM)_pytorch深度学习实践12课后作业-程序员宅基地

文章浏览阅读837次,点赞3次,收藏9次。B站 刘二大人 传送门 循环神经网络(基础篇)课件链接:https://pan.baidu.com/s/1vZ27gKp8Pl-qICn_p2PaSw提取码:cxe4模型还是将输入“hello”训练输出为“ohlol”,用LSTM网络实现。按照计算图实现LSTM之后,又尝试了加入embedding的方法。加embedding的训练快,但是我的LSTM效果不如前面RNN的,不知道是我网络写的有问题还是怎么回事。LSTM的网络结构示意图和公式:根据我自己的理解写出来的LSTM模型,有不对的地方_pytorch深度学习实践12课后作业

android实训项目无线点餐系统服务器的设置,无线点餐系统的设计与实现--Android实训.doc...-程序员宅基地

文章浏览阅读208次。Android课程设计报告院 系: 计算机与信息工程学院班 级: 10级软件技术一班学 号:姓 名:PAGEPAGE 14目录TOC \o "1-3" \h \u 24017 一、系统架构 311293 二、功能分配 35248 2.1.浏览功能 326351 2.2.查询功能 314154 2.3.插入功能 328656 2.4.修改功能 41740 2.5.删除功能 41540 三、内..._android无线点餐系统

Python3 --- Scrapy安装_command "e:\python3.7.3\python.exe -u -c "import s-程序员宅基地

文章浏览阅读566次。安装方式一:如果使用的是PyCharm则File-->Settings-->Project Interpreter,选择绿色加号搜索Scrapy安装即可,如下图:这里需要注意Manage Repositories可以配置成: https://pypi.douban.com/simple/ http://mirrors.aliyun.com/pypi/simple/..._command "e:\python3.7.3\python.exe -u -c "import setuptools, tokenize;__file

cookie和session的区别(简单理解)_cookie和session区别-程序员宅基地

文章浏览阅读471次。由于HTTP协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识具体的用户,这个机制就是Session.典型的场景比如购物车,当你点击下单按钮时,由于HTTP协议无状态,所以并不知道是哪个用户操作的,所以服务端要为特定的用户创建了特定的Session,用用于标识这个用户,并且跟踪用户,这样才知道购物车里面有几本书。这个Session是保存在服务端的,有一个唯一标识。在服务端保..._cookie和session区别

随便推点

OwlCarousel使用-程序员宅基地

文章浏览阅读1.4w次,点赞6次,收藏19次。参考:http://www.jq22.com/jquery-info6010使用方法Owl Carousel 2是上一版Owl Carousel的升级版本。Owl Carousel 2可以让你创建漂亮的响应式旋转木马的jQuery插件,它支持移动触摸屏,功能十分强大。Owl的新特性有: 可以无限循环 项目可以居中显示 灵活的速度控制 多级别的paddin..._owlcarousel

【深度学习】使用caffeNet训练自己的数据集(caffe框架)-程序员宅基地

文章浏览阅读3.5k次。主要参考:官方网址:http://caffe.berkeleyvision.org/gathered/examples/imagenet.html数据集及第一部分参考网址:http://www.lxway.com/4010652262.htm主要步骤:1. 准备数据集2. 标记数据集3. 创建lmdb格式的数据4. 计算均值5. 设置网络及求解器6. 运行求解由于imagenet的数据集太大,博主..._caffenet

SpringBoot集成Quartz 2.3.1动态管理定时任务_springboot实现动态管理quartz-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏12次。我写了一个简单的Demo项目,有需要的文末可获取项目github地址,该项目我会一直保持更新。基于quartz2.3.1实现动态管理定时任务。使用swagger实现接口文档。前后端统一使用JSON格式交互。使用Hutool工具类直接连接数据库,避免Job任务中不能使用Autowired问题。swagger文档如下图:后续文章创建JobDetail(JobBuilder详解)创建CronTrigger(TriggerBuilder详解)_springboot实现动态管理quartz

C#控制利用模板文件通过BarTender控制斑马打印机打印_c# 直接调用斑马打印机打印固定模板-程序员宅基地

文章浏览阅读2k次。重点在后面:https://blog.csdn.net/z_344791576/article/details/46328443?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159546478119725219951536%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=15954647811972521995_c# 直接调用斑马打印机打印固定模板

matlab multiple animatedline,matlab画图详解-程序员宅基地

文章浏览阅读926次。一. 二维图形(Two dimensional plotting)1. 基本绘图函数(Basic plotting function):Plot,semilogx,semilogy, loglog,polar, plotyy(1). 单矢量绘图(single vectorplotting):plot(y),矢量y的元素与y元素下标之间在线性坐标下的关系曲线。例1:单矢量绘图y=[0 0.6 2...._animatedline 添加图例