Android Gradle 插件版本说明

2023-11-15

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'
    }
}

   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

注意:不应在版本号中使用动态依赖项(如
‘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"
...

   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5

关于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
  }
}

   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 发布方模块必须在 build.gradle 文件中启用 prefabPublishing。
android {
  buildFeatures {
    prefabPublishing true
  }
}

   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 使用方模块必须通过在 build.gradle 文件的 dependencies 代码块中添加一行代码来引用发布方模块。例如:
dependencies {
  implementation project(':mylibrary')
}

   
   
   
   
  • 1
  • 2
  • 3
  • 发布方模块必须使用 prefab 部分公开软件包。例如:
android {
  prefab {
    mylibrary {
      libraryName "libmylibrary"
      headers "src/main/cpp/include"
    }
  }
}

   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 使用方模块的 CMakeLists.txt 文件可以使用 find_package() 来查找提供方模块发布的软件包。例如:
find_package(mylibrary REQUIRED CONFIG)
target_link_libraries(
        myapplication
        mylibrary::mylibrary)

   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 整个应用必须有一个 STL。例如,使用方模块和发布方模块都可以使用 C++ 共享 STL。
   android {
defaultConfig {
        externalNativeBuild {
          cmake {
            arguments '-DANDROID_STL=c++_shared'
          }
        }
      }
    }

   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

如需详细了解如何使用 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
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 以前位于顶级 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’

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

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


官方说明地址

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android Gradle 插件版本说明 的相关文章

随机推荐

  • 数据包络分析(DEA)——CCR模型

    写在前面 博主本人大学期间参加数学建模竞赛十多余次 获奖等级均在二等奖以上 为了让更多学生在数学建模这条路上少走弯路 故将数学建模常用数学模型算法汇聚于此专栏 希望能够对要参加数学建模比赛的同学们有所帮助 目录 1 模型原理 1 1 模型介
  • 如何搭建以太坊测试链(附教程)

    在以太坊项目实际开发中 我们必须要有一个测试环境 因为产品环境是需要消耗GAS的 因此我们希望在测试环境测试无误之后再发布到产品环境以太坊链上去 本篇教程讲述如何搭建本地的测试链 1 Testnets 以太坊的测试网络环境被称为Testne
  • LeetCode 125. 验证回文串

    题目链接 https leetcode cn problems valid palindrome 思路如下 双指针 一首一尾 相向扫描 每次将两个指针分别移动到下一个字母字符或数字字符 再判断这两个指针指向的字符是否相同 C 代码如下 cl
  • Vue为数字添加逗号分隔

    1 看代码 我将这个代码作为外部js导出了 如果你没有那么多模块 就直接CTRL cv 这个方法 丢到你的 vue代码 methods中就可以用了 export const numberFilter function value cut 2
  • Java Class Version 研究

    一 要解决的问题 我们在尝鲜 JDK1 5 的时候 相信不少人遇到过 Unsupported major minor version 49 0 错误 当时定会茫然不知所措 因为刚开始那会儿 网上与此相关的中文资料还不多 现在好了 网上一找就
  • Mac平台安卓模拟器:网易MuMu mac中文免费版(支持12系统)

    网易MuMu Mac版是一款可以让Mac用户在电脑上轻松玩手游的安卓模拟器 是迄今为止国内最好最流畅的手游模拟器软件 网易mumu mac版现已支持梦幻西游 大话西游 倩女幽魂等众多经典安卓手机游戏 mumu模拟器mac版为大家提供海量免费
  • Python模块-pandas

    目录 数据读取 数据探索 数据清洗 数据清洗 类型转换 缺失值 重复值 值替换 修改表结构 新增列 删除列 删除行 修改列名 数据分组 数值变量 数据分列 分类变量 设置索引 排序 数据筛选 切片 多表拼接 数据聚合 分组运算 groupb
  • 高数:第一章:函数、极限、连续

    文章目录 一 函数 1 函数的概念 基本初等函数 初等函数 2 函数的性质 函数四性态 1 单调性 2 奇偶性 3 导函数的奇偶性 3 周期性 4 有界性 5 对称性 3 基本不等式 4 开根要带绝对值 二 极限 1 极限的概念 数列极限
  • R语言的基础语法及常用命令

    R其实对于数据分析来说只是工具而已 所以刚开始不需要学习多么深多么细 只需要能够满足当前需求就行 之后的在实践中慢慢学习 毕竟想要把R学精并不是容易的事情 正确的做法就是边做边学 不会就google翻文档 本片主要是R的基础语法及常用的命令
  • 关系运算和逻辑运算( &与&& 和

    关系运算和逻辑运算 关系运算 比较 gt gt lt lt 对象 instanceof 类 1 区分 和 区别 赋值符号 将 后面的结果 值 引用 存入 左边的变量空间内 比较符号 比较 后面的元素 值 引用 与前面的是否一致 2 比较运算
  • 外部组件发生异常怎么解决_火绒提示安全服务异常是怎么回事?三种方法帮你轻松解决此问题...

    平时我们在使用电脑的过程当中 为了保护电脑的安全 我们往往会在电脑上安装防护类的软件 比如火绒安全软件 它是一款集杀防于一体的电脑防御及杀毒类安全软件 使用这款软件来保护电脑 不仅软件的体积小巧 占用资源小 而且它的功能强大 可以对我们的电
  • 如何向这个public static void main(String[] args)中的args数组传递参数呢

    如何向这个public static void main String args 中的args数组传递参数呢 重新认识 main 方法 要向 public static void main String args 中的 args 数组传递参
  • Jquery中each的三种遍历方法

    1 选择器 遍历 div each function i i就是索引值 this 表示获取遍历每一个dom对象 2 选择器 遍历 div each function index domEle index就是索引值 domEle 表示获取遍历
  • python 蓝桥 数列排序

    题目 数列排序 问题描述 给定一个长度为n的数列 将这个数列按从小到大的顺序排列 1 lt n lt 200 原因分析 输出格式 输出一行 按从小到大的顺序输出排序后的数列 样例输入 5 8 3 6 4 9 样例输出 3 4 6 8 9 解
  • LittleFOC工程简记——基于定点数的电流PI控制器设计

    LittleFOC工程简记 基于定点数的电流PI控制器设计 这里罗列了系列文章链接 文章目录 LittleFOC工程简记 基于定点数的电流PI控制器设计 前言 电机系统 工程分析 工程代码 前言 在FOC程序在设计的过程中 对于很多芯片而言
  • 地面分割--Patchwork

    文章目录 1问题定义 2同心区域模型 3按照区域划分的平面拟合 4地面点似然估计 GLE 总结 patchwork是一种比较优秀的地面分割方法 其过程主要分为三个部分 同心圆环区域 CZM concentric Zone Model 按照区
  • Qt connect 第五个参数

    一 Qt connect 函数原型如下 第五个 5种 参数根据接收者和发送者是否在同一个线程不同 QObject connect const QObject sender const char signal const QObject re
  • 【安全与协议】使用crypto.js进行加密详解

    JavaScript Crypto JS 前言与工具 前言 使用 Crypto JS 可以非常方便地在 JavaScript 进行 MD5 SHA1 SHA2 SHA3 RIPEMD 160 哈希散列 进行 AES DES Rabbit R
  • chatgpt赋能python:Python中如何取出列表中的数字

    Python中如何取出列表中的数字 在Python编程中 经常需要从一个包含数字和其他类型数据的列表中仅取出数字元素 这可以通过几种不同的方法来实现 下面将介绍其中常用的几种方法 1 使用循环遍历 第一种方法是使用循环遍历列表 并检查每个元
  • Android Gradle 插件版本说明

    Android Gradle 插件版本说明 在更新 Android Studio 时 您可能会收到一并将 Gradle 更新为最新可用版本的提示 您可以选择接受该更新 也可以根据项目的构建要求手动指定版本 下表列出了各个 Android G