Android Studio 与 Gradle 及插件版本兼容性
Android Studio 开始新项目时,会自动创建其中部分文件,并为其填充合理的默认值。
项目文件结构布局:



一、Android Gradle 及插件作用:
Android Studio 构建系统以 Gradle 为基础,并且 Android Gradle 插件 (AGP) 添加了几项专用于构建 Android 应用的功能。
Android 构建系统会编译应用资源和源代码,然后将它们打包成 APK 或 Android App Bundle 文件,供测试、部署、签名和分发。
Android Studio 使用高级构建工具包 Gradle 来自动执行和管理构建流程,同时也允许自行指定灵活的 build 配置。每项 build 配置均可定义各自的一组代码和资源,同时重复利用所有应用版本共用的部分。Android Gradle 插件与该构建工具包搭配使用,提供专用于构建和测试 Android 应用的流程和可配置设置。
Gradle 和 Android Gradle 插件独立于 Android Studio 运行。这意味着,您可以在 Android Studio 内、计算机上的命令行或未安装 Android Studio 的计算机(如持续集成服务器)上构建 Android 应用。
Android Studio 和 AGP 需要满足最低版本要求才能支持特定 API 级别。如果使用的 Android Studio 或 AGP 版本低于项目的 targetSdk 或 compileSdk 所要求的版本,可能会导致意外问题。
Android Studio 和 AGP 的最低版本如下所示:

谷歌宣称将更新 Android Gradle 插件 (AGP) 的版本号,以使其更接近底层 Gradle 构建工具。
重要变更如下:
-
AGP 现在将使用语义版本控制,并且重大变更将在主要版本中发布。
-
每年将发布一个 AGP 主要版本,与 Gradle 主要版本保持一致。
-
AGP 4.2 之后的版本为版本 7.0,并且会要求升级到 Gradle 7.x 版。AGP 的每个主要版本都会要求在底层 Gradle 工具中进行主要版本升级。
-
API 将提前大约一年废弃,同时提供替代功能。弃用的 API 将在大约一年后的下次主要版本更新期间移除。
Android Gradle 插件 8.3 支持的最高 API 级别为 API 级别 34。下面是其他兼容性信息:
| 最低版本 | 默认版本 | 备注 | |
|---|---|---|---|
| Gradle | 土耳其里拉 | 土耳其里拉 | 如需了解详情,请参阅更新 Gradle。 |
| SDK Build Tools | 34.0.0 | 34.0.0 | 安装或配置 SDK Build Tools。 |
| NDK | 不适用 | 26.1.10909125 | 安装或配置其他版本的 NDK。 |
| JDK | 17 | 17 | 如需了解详情,请参阅设置 JDK 版本。 |
二、Android Studio 版本与 AGP 版本兼容性:
下表列出了各个 Android Studio 版本所需的 AGP 版本。
| Android Studio 版本 | 所需 AGP 版本 |
| Koala | 2024.1.1 | 3.2-8.5 |
| Jellyfish | 2023.3.1 | 3.2-8.4 |
| Iguana | 2023.2.1 | 3.2-8.3 |
| Hedgehog | 2023.1.1 | 3.2-8.2 |
| Giraffe | 2022.3.1 | 3.2-8.1 |
| Flamingo | 2022.2.1 | 3.2-8.0 |
| Electric Eel | 2022.1.1 | 3.2-7.4 |
| Dolphin | 2021.3.1 | 3.2-7.3 |
| Chipmunk | 2021.2.1 | 3.2-7.2 |
| Bumblebee | 2021.1.1 | 3.2-7.1 |
| Arctic Fox | 2020.3.1 | 3.1-7.0 |
三、Gradle 版本与 AGP 版本兼容性:
更新 Android Studio 时,可能会收到一并将 Gradle 更新为最新可用版本的提示。
可以选择接受该更新,也可以根据项目的构建要求手动指定版本。
下表列出了各个 Android Gradle 插件版本所需的 Gradle 版本。为了获得最佳性能,最好使用 Gradle 和插件这两者的最新版本。
| 插件版本 | 所需最低 Gradle 版本 |
| 8.4 | 土耳其里拉 |
| 8.3 | 8.4 |
| 8.2 | 8.2 |
| 8.1 | 8 |
| 8 | 8 |
| 7.4 | 7.5 |
| 7.3 | 7.4 |
| 7.2 | 7.3.3 |
| 7.1 | 7.2 |
| 7 | 7 |
| 4.2.0+ | 6.7.1 |
| 4.1.0+ | 6.5+ |
| 4.0.0+ | 6.1.1+ |
| 3.6.0 - 3.6.4 | 5.6.4+ |
| 3.5.0 - 3.5.4 | 5.4.1+ |
| 3.4.0 - 3.4.3 | 5.1.1+ |
| 3.3.0 - 3.3.3 | 4.10.1+ |
| 3.2.0 - 3.2.1 | 4.6+ |
| 3.1.0+ | 4.4+ |
| 3.0.0+ | 4.1+ |
| 2.3.0+ | 3.3+ |
| 2.1.3 - 2.2.3 | 2.14.1 - 3.5 |
| 2.0.0 - 2.1.2 | 2.10 - 2.13 |
| 1.5.0 | 2.2.1 - 2.13 |
| 1.2.0 - 1.3.1 | 2.2.1 - 2.9 |
| 1.0.0 - 1.1.3 | 2.2.1 - 2.3 |
老徐,2024/5/19
相关文章:
Android Studio 与 Gradle 及插件版本兼容性
Android Studio 开始新项目时,会自动创建其中部分文件,并为其填充合理的默认值。 项目文件结构布局: 一、Android Gradle 及插件作用: Android Studio 构建系统以 Gradle 为基础,并且 Android Gradle 插件 (AGP) 添加…...
【BUG】Edge|联想电脑 Bing 搜索报错“Ref A: 乱码、 Ref B:乱码、Ref C: 日期” 的解决办法
文章目录 省流版前言解决办法 详细解释版前言问题描述与排查过程解决办法与总结 省流版 我原以为我解决了,才发的博客,晚上用了一下其他设备发现还是会出现这个问题… 这篇博客并未解决该问题,如果评论里有人解决了这个问题不胜感激&#x…...
深度学习小车操作手册全
深度学习小车_操作手册_全 资源链接 分享文件:深度学习小车_操作手册_全.pdf 链接:https://pan.xunlei.com/s/VNy-KXPDZw64RqQGXiWVEDMRA1?pwdymu4# 复制这段内容后打开手机迅雷App,查看更方便智能车简介 2019 年的特斯拉自动驾驶开放日上…...
Python实现天气数据采集
Python实现天气数据采集 一、需求介绍二、完整代码一、需求介绍 本次天气数据采集的需求是获取每日的最高温、最低温、风力、风向、天气状况、AQI指数,如图所示,完整代码附后: 本次采集的目标网址是2345天气网: 上图的URL中,beijing是城市名称的缩写,54511即为城市代码…...
05 JavaSE-- 异常、IOStream、多线程、反射、Annotation、泛型、序列化
Exception 异常 异常也是对象,也有自己的体系,在这个体系中,所有异常对象的根类是 throwable 接口。异常和 error 错误是不同的概念。 错误是严重的 JVM 系统问题,一般不期待程序员去捕获、处理这些错误,同时…...
c++/c语法基础【2】
目录 1.memset 数组批量赋值 2.字符数组 编辑输入输出: 字符数组直接输入输出%s: gets! string.h 1.strlen:字符串去掉末尾\0的长度...
python 庆余年2收视率数据分析与可视化
为了对《庆余年2》的收视率进行数据分析与可视化,我们首先需要假设有一组收视率数据。由于实际数据可能无法直接获取,这里我们将使用模拟数据来演示整个过程。 以下是一个简单的步骤,展示如何使用Python(特别是pandas和matplotli…...
yolov8训练自己数据集时出现loss值为nan。
具体原因目前暂未寻找到。 解决办法 将参数amp改成False即可。 相关资料: https://zhuanlan.zhihu.com/p/165152789 https://github.com/ultralytics/ultralytics/issues/1148...
[Chapter 5]线程级并行,《计算机系统结构》,《计算机体系结构:量化研究方法》
文章目录 一、互连网络1.1 互连网络概述1.1 互连函数1.1.1 互连函数1.1.2 几种基本的互连函数1.1.2.1 恒等函数1.1.2.2 交换函数1.1.2.3 均匀洗牌函数1.1.2.4 碟式函数1.1.2.5 反位序函数1.1.2.6 移数函数1.1.2.7 PM2I函数 1.2 互连网络的结构参数与性能指标1.2.1 互连网络的结…...
首发!飞凌嵌入式FETMX6ULL-S核心板已适配OpenHarmony 4.1
近日,飞凌嵌入式在FETMX6ULL-S核心板上率先适配了OpenHarmony 4.1,这也是业内的首个应用案例,嵌入式核心板与OpenHarmony操作系统的结合与应用,将进一步推动千行百业的数智化进程。 飞凌嵌入式FETMX6ULL-S核心板基于NXP i.MX 6ULL…...
Power BI实现动态度量值
假设有一张销售数据表Sale: 报表上有一个切片器(Slicer)(下拉框样式), 当选择"第一"时,计算列[FirstSale]与列[Target]的百分比, 选择"第二"时,计算列[SecondSale]与列[Target]的百分比 选择"第三&qu…...
给大家分享一套非常棒的python机器学习课程
给大家分享一套非常棒的python机器学习课程——《AI小天才:让小学生轻松掌握机器学习》,2024年5月完结新课,提供配套的代码笔记软件包下载!学完本课程,可以轻松掌握机器学习的全面应用,复杂特征工程&#x…...
免费,Python蓝桥杯等级考试真题--第6级(含答案解析和代码)
Python蓝桥杯等级考试真题–第6级 一、 选择题 答案:D 解析:4411*4,超出范围,故答案为D。 答案:B 解析:5<8<10,故答案为B。 答案:A 解析:先比较a,然后…...
Spring Boot:SpringBoot 如何优雅地定制JSON响应数据返回
一、前言 目前微服务项目中RESTful API已经是前后端对接数据格式的标配模式了,RESTful API是一种基于REST(Representational State Transfer,表述性状态转移)原则的应用程序编程接口(Application Programming Interfac…...
c++中的constexpr 与decltype
constexpr constexpr 是 C11 引入的关键字,用于声明可以在编译时求值的常量表达式。constexpr 函数可以在编译时被计算,从而可以提高程序的性能并允许进行一些在运行时无法完成的优化。 在 C 中,constexpr 可以用于以下两种情况:…...
苹果MacOS系统使用微软远程桌面连接Windows电脑桌面详细步骤
文章目录 前言1. 测试本地局域网内远程控制1.1 Windows打开远程桌面1.2 局域网远程控制windows 2. 测试Mac公网远程控制windows2.1 在windows电脑上安装cpolar2.2 Mac公网远程windows 3. 配置公网固定TCP地址 前言 日常工作生活中,有时候会涉及到不同设备不同操作系…...
【paper】基于分布式采样的多机器人编队导航信念传播模型预测控制
Distributed Sampling-Based Model Predictive Control via Belief Propagation for Multi-Robot Formation NavigationRAL 2024.4Chao Jiang 美国 University of Wyoming 预备知识 马尔可夫随机场(Markov Random Field, MRF) 马尔可夫随机场ÿ…...
代码随想录算法训练营第二天| 977.有序数组的平方 、209.长度最小的子数组、 59.螺旋矩阵II
977. 有序数组的平方 题目链接:977. 有序数组的平方 文档讲解:代码随想录 状态:so easy 刚开始看到题目第一反应就是平方之后进行排序,数据量在 1 0 4 10^4 104,可以使用O(nlogn)的排序。但是更好的方式是使用双指针&a…...
list stream 改变list属性的值
在Java中,如果你想使用Stream API来改变List中对象的某个属性值,需要注意的是,Stream API本身设计为不可变操作,即它不直接修改原有的集合,而是产生一个新的流或集合。但是,你可以通过流操作来创建一个新的…...
绿色智能:AI机器学习在环境保护中的深度应用与实践案例
🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的
修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...
LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)
在上一篇文章中,我们详细介绍了如何使用LLaMA-Factory框架对Qwen2-VL大模型进行微调,以实现人脸情感识别的功能。本篇文章将聚焦于微调完成后,如何调用这个模型进行人脸情感识别的具体代码实现,包括详细的步骤和注释。 模型调用步骤 环境准备:确保安装了必要的Python库。…...
恶补电源:1.电桥
一、元器件的选择 搜索并选择电桥,再multisim中选择FWB,就有各种型号的电桥: 电桥是用来干嘛的呢? 它是一个由四个二极管搭成的“桥梁”形状的电路,用来把交流电(AC)变成直流电(DC)。…...
Windows 下端口占用排查与释放全攻略
Windows 下端口占用排查与释放全攻略 在开发和运维过程中,经常会遇到端口被占用的问题(如 8080、3306 等常用端口)。本文将详细介绍如何通过命令行和图形化界面快速定位并释放被占用的端口,帮助你高效解决此类问题。 一、准…...
