成都 网站建设 公司哪家好/小学生摘抄新闻
文章目录
- 前言
- 开发环境
- 问题描述
- 问题分析
- 解决方案
- 补充内容
- 最后
前言
前段时间升级Android Studio后修复了一堆问题,详情请看:Android问题记录 - 适配Android Studio Ladybug/Java 21/AGP 8.0(持续更新)。我以为问题已经全部解决了,没想到时隔一个多月,在部署项目到新设备时又出现了新问题。
开发环境
- Flutter: 3.24.5
- Android Studio: 2024.2.1 Patch 3
- Java: 21.0.3
- Gradle: 8.5
- Android Gradle Plugin (AGP): 8.3.2
- Kotlin Gradle Plugin (KGP): 1.7.10
问题描述
项目构建运行后报错,部分报错日志如下:
e: /xxx/.gradle/caches/transforms-3/552b5fda311668ef6542358a30864490/transformed/jetified-kotlin-stdlib-1.9.24.jar!/META-INF/kotlin-stdlib-jdk7.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.9.0, expected version is 1.7.1.
...FAILURE: Build failed with an exception.* What went wrong:
Execution failed for task ':app:compileDebugKotlin'.
> A failure occurred while executing org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction> Compilation error. See log for more details
...┌─ Flutter Fix ──────────────────────────────────────────────────────────────────────────────────────────┐
│ [!] Your project requires a newer version of the Kotlin Gradle plugin. │
│ Find the latest version on https://kotlinlang.org/docs/releases.html#release-details, then update the │
│ version number of the plugin with id "org.jetbrains.kotlin.android" in the plugins block of │
│ /Users/xxx/android/settings.gradle. │
│ │
│ Alternatively (if your project was created before Flutter 3.19), update │
│ /Users/xxx/android/build.gradle │
│ ext.kotlin_version = '<latest-version>' │
└────────────────────────────────────────────────────────────────────────────────────────────────────────┘
问题分析
因为是Flutter项目,Flutter还贴心的给出了修复方法,升级Kotlin Gradle插件(KGP)。
先不急着升级,有一点很奇怪,在日常开发的电脑上运行是正常的。尝试将日常开发环境下的.gradle
打包压缩复制到出问题的电脑,结果还是不行。
只能先试试升级KGP版本,找到Android项目根目录下的settings.gradle
修改版本:
plugins {id "org.jetbrains.kotlin.android" version "1.9.24" apply false
}
如果你还在使用老的写法,找到Android项目根目录下的build.gradle
修改版本:
buildscript {ext.kotlin_version = '1.9.24'
}
这里补充一点,ext.kotlin_version
指定的是Kotlin编译器的版本,不过KGP和Kotlin共享相同的版本号(参考官方文档),所以实际上这个配置同时指定了KGP的版本,反之也是一样。
升级了KGP版本,需要升级Gradle或AGP的版本吗?通常是不需要的。以下是KGP对Gradle和AGP完全支持的最低以及最高版本范围:
参考文档:
- Configure a Gradle project
从表中可以看到,1.9.24
的KGP版本完全支持的Gradle版本是6.8.3–8.1.1
,完全支持的AGP版本是4.2.2–8.1.0
。当前项目的Gradle版本是8.5
,AGP版本是8.3.2
,这版本是不是都太高了?
是的,确实都高了。不过,这表中列出的是完全支持的版本范围,也就是兼容性最好的版本范围,不在这范围也是可以用的,只不过兼容性可能没那么好。如果需要追求更好的兼容性,将KGP版本升级到当前最新的2.1.0
也是可行的,不过不建议,因为第三方库可能还没适配会报错。
升级后重新运行出现新的报错:
Execution failed for task ':xxx:compileDebugKotlin'.
> Inconsistent JVM-target compatibility detected for tasks 'compileDebugJavaWithJavac' (1.8) and 'compileDebugKotlin' (21).
你可能遇到是类似这样的报错:
Execution failed for task ':xxx:compileDebugKotlin'.
> Inconsistent JVM-target compatibility detected for tasks 'compileDebugJavaWithJavac' (1.8) and 'compileDebugKotlin' (17).
报错中的compileDebugJavaWithJavac
后面跟的版本是由以下配置决定的,如果未配置默认是1.8
:
android {compileOptions {sourceCompatibility JavaVersion.VERSION_1_8targetCompatibility JavaVersion.VERSION_1_8}
}
compileDebugKotlin
后面跟的版本是由以下配置决定的,如果未配置会由KGP决定,不同版本的KGP对jvmTarget
的默认值不同:
android {kotlinOptions {jvmTarget = "1.8"}
}
报错的依赖库只配置了compileOptions
,未配置kotlinOptions
,这导致两者的JVM版本不一致出现冲突。那为什么以前没报错呢?我猜测KGP之前的版本对jvmTarget
的默认值就是1.8
(未找到官方文档),所以KGP升级之前没有JVM版本不一致问题。
该怎么解决呢?尝试在Android项目根目录下的build.gradle
中增加以下内容统一设置kotlinOptions
:
subprojects {afterEvaluate {tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { kotlinTask ->kotlinTask.kotlinOptions.jvmTarget = "1.8"}}
}
但这又会导致其他依赖库报错:
Execution failed for task ':xxx:compileDebugKotlin'.
> Inconsistent JVM-target compatibility detected for tasks 'compileDebugJavaWithJavac' (17) and 'compileDebugKotlin' (1.8).
有些依赖库在compileOptions
配置中指定了JavaVersion.VERSION_17
版本,统一设置kotlinOptions
后反而出现了冲突。继续优化一下,只对版本不一致的依赖库统一设置:
subprojects {afterEvaluate { project ->if (project.plugins.hasPlugin("com.android.application") || project.plugins.hasPlugin("com.android.library")) {tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { kotlinTask ->def sourceCompatibility = project.android.compileOptions.sourceCompatibility?.toString() ?: "1.8"def jvmTarget = kotlinTask.kotlinOptions.jvmTarget ?: ""if (sourceCompatibility != jvmTarget) {kotlinTask.kotlinOptions.jvmTarget = sourceCompatibilityprintln "INFO: Updated jvmTarget for ${project.name} to ${sourceCompatibility}"}}}}
}
重新构建运行,一切正常!
解决方案
Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.9.0, expected version is 1.7.1.
请看前面的问题分析并升级Kotlin Gradle插件(KGP)版本解决。
Inconsistent JVM-target compatibility detected for tasks 'compileDebugJavaWithJavac' (1.8) and 'compileDebugKotlin' (21).
在Android项目根目录下的build.gradle
中增加以下内容解决:
subprojects {afterEvaluate { project ->if (project.plugins.hasPlugin("com.android.application") || project.plugins.hasPlugin("com.android.library")) {tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { kotlinTask ->def sourceCompatibility = project.android.compileOptions.sourceCompatibility?.toString() ?: "1.8"def jvmTarget = kotlinTask.kotlinOptions.jvmTarget ?: ""if (sourceCompatibility != jvmTarget) {kotlinTask.kotlinOptions.jvmTarget = sourceCompatibilityprintln "INFO: Updated jvmTarget for ${project.name} to ${sourceCompatibility}"}}}}
}
补充内容
- 如果是Flutter项目遇到以下报错,通常是因为下载指定的Gradle版本失败导致的。可以尝试用Android Studio单独打开Flutter项目下的Android项目并执行
Gradle Sync
解决。
Exception in thread "main" java.til.zip.ZipException: zip END header not foundat java.base/java.util.zip.ZipFile$Source.findEND(Unknown Source)at java.base/java.util.zip.ZipFile$Source.initCEN(Unknown Source)at java.base/java.util.zip.ZipFile$Source.<init>(Unknown Source)at java.base/java.util.zip.ZipFile$Source.get(Unknown Source)at java.base/java.util.zip.ZipFile$CleanableResource.<init>(Unknown Source)at java.base/java.util.zip.ZipFile.<init>(Unknown Source)at java.base/java.util.zip.ZipFile.<init>(Unknown Source)at java.base/java.util.zip.ZipFile.<init>(Unknown Source)at org.gradle.wrapper.Install.unzip(Install.java:214)at org.gradle.wrapper.Install.access$600(Install.java:27)at org.gradle.wrapper.Install$1.call(Install.java:74)at org.gradle.wrapper.Install$1.call(Install.java:48)at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:65)...
- 如果是Flutter项目遇到以下报错,可能是因为Gradle版本太低导致的,可以尝试升级Gradle版本解决。
Warning: Flutter was unable to detect project Gradle, Java, AGP, and KGP versions. Skipping dependency version checking. Error was: org.gradle.internal.exceptions.LocationAwareException: Script '/xxx/flutter/packages/flutter_tools/gradle/src/main/kotlin/dependency_version_checker.gradle.kts' line: 1
Failed to load compiled script from classpath [/xxx/.gradle/caches/8.5/kotlin-dsl/scripts/da5f7ca28e610c6354c26e9549dbcb59/classes->/xxx/.gradle/caches/jars-9/fb6235f7ef58bafc318ce2cbd09edaf5/classes.jar, /xxx/.gradle/caches/8.5/kotlin-dsl/accessors/3d3fa6fe1c82cb5e6a478c18364a3a05-PS/classes].
最后
如果这篇文章对你有所帮助,点赞👍收藏🌟支持一下吧,谢谢~
本篇文章由@crasowas发布于CSDN。
相关文章:

Android问题记录 - Inconsistent JVM-target compatibility detected for tasks
文章目录 前言开发环境问题描述问题分析解决方案补充内容最后 前言 前段时间升级Android Studio后修复了一堆问题,详情请看:Android问题记录 - 适配Android Studio Ladybug/Java 21/AGP 8.0(持续更新)。我以为问题已经全部解决了…...

ejb组件(rmi) webservice平台(xml)
springboot bean 在 Spring Boot 中,Bean 是 Spring 框架的核心概念之一,表示由 Spring 容器管理的对象。通过 Bean 或其他注解(如 Component、Service、Repository 等)来定义和管理这些对象。以下是关于 Spring Boot 中 Bean 的…...

【jvm】垃圾回收的重点区域
目录 1. 说明2. 堆(Heap)3. 方法区(Method Area) 1. 说明 1.JVM(Java Virtual Machine)垃圾回收的重点区域主要集中在堆(Heap)和方法区(Method Area)。2.堆是…...

PyQt信号槽实现页面的登录与跳转 #页面进一步优化
将登录框中的取消按钮使用信号和槽的机制,关闭界面。 将登录按钮使用信号和槽连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin",密码是否为"123456",如果账号密码匹配成功,当前界面关…...

谈谈web3
全面解析 Web3:未来互联网的革命性进程 引言:互联网进化的三部曲 互联网的发展经历了三个重要阶段,每一个阶段都深刻地改变了我们的生活方式: Web1(1990-2005):静态互联网时代,人…...

正则表达式实战例子
正则表达式实战例子 1. 验证电子邮件地址 定义一个合理的电子邮件格式,并检查给定的字符串是否符合这个模式。 import redef is_valid_email(email):# 定义电子邮件格式的正则表达式pattern r^[a-zA-Z0-9_.-][a-zA-Z0-9-]\.[a-zA-Z0-9-.]$return bool(re.match(…...

Hadoop不同版本的区别
免费springboot,vue,springcloudalibaba视频,有兴趣可以看看 <!-- springboot,springboot整合redis,整合rocketmq视频: --> https://www.bilibili.com/video/BV1nkmRYSErk/?vd_source14d27ec13a473…...

QtCreator UI界面 菜单栏无法输入中文
如下图红色所示的区域,直接输入是无法输入中文的: 解决方法:在右边的属性值里输入即可 也可以参考这位同学的解决方法:友情链接...

java switch及其新特性
switch是什么 在Java中,switch语句是一种多分支选择结构,它允许程序根据一个表达式的值从多个代码块中选择执行哪一个。switch语句通常比多个if-else语句更清晰、更易读。 Java switch语句的基本语法: switch (expression) {case value1:/…...

E卷-货币单位换算(100分)
货币单位换算 问题描述 在一个多国货币记账本中,记录了若干条不同货币的金额。现在需要将这些金额全部转换成人民币分(fen),并进行汇总。每条记录可能包含单独的元、单独的分,或者元与分的组合。转换时,需要考虑不同货币之间的汇率关系。 要求将这些货币全部换算成人民…...

什么是MMD Maximum Mean Discrepancy 最大均值差异?
9多次在迁移学习看到了,居然还是Bernhard Schlkopf大佬的论文,仔细看看。 一.什么是MMD? 1. MMD要做什么? 判断两个样本(族)是不是来自于同一分布 2.怎么做?(直观上)…...

沐风老师3DMAX摄相机阵列插件使用方法
3DMAX摄相机阵列插件,从网格对象或样条线的顶点法线快速创建摄相机阵列。该插件从网格的顶点或样条线的节点获取每个摄影机的位置和方向。 3DMAX摄相机阵列插件支持目前3dMax主流的物理相机、标准相机、VRay物理相机。 【版本要求】 3dMax 2015及更高版本 【安装方…...

Java Web 开发学习中:过滤器与 Ajax 异步请求
一、过滤器 Filter: 过滤器的概念与用途 在一个庞大的 Web 应用中,有许多资源需要受到保护或进行特定的预处理。过滤器就像是一位智能的守卫,站在资源的入口处,根据预先设定的规则,决定哪些请求可以顺利访问资源&…...

数据结构 (36)各种排序方法的综合比较
一、常见排序方法分类 插入排序类 直接插入排序:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。希尔排序:是插入排序的一种改进版本,先将整个待排序的记录序列分割成为…...

使用vue搭建不需要打包的前端项目
需求详情:用户不要项目进行打包,开发还是选用vue2,且需要便于上手 项目目录 >api 存放api.js,主要是前端用到的接口 >css >>>fonts 存放页面需要的字体文件 >>>1.css 存放所有css文件 >data 存放echarts…...

发布订阅者=>fiber=>虚拟dom
文章目录 vue的响应式原理-发布订阅者模式vue3 响应式原理及优化fiberfiber 与 虚拟dom vue的响应式原理-发布订阅者模式 Vue响应式原理概述 Vue.js的响应式原理是其核心特性之一。它使得当数据发生变化时,与之绑定的DOM元素能够自动更新。其主要基于数据劫持和发布…...

Python-计算机中的码制以及基础运算符(用于分析内存)
记录python学习,直到学会基本的爬虫,使用python搭建接口自动化测试就算学会了,在进阶webui自动化,app自动化 python基础2-码制 计算机中的码制原码(True Form)反码(Ones Complement)…...

yum 离线软件安装
适用范围 支持YUM软件管理的操作系统: 银河麒麟 服务器操作系统V10统信服务器操作系统V20CentOS 系列 准备 准备一台可以连接互联网并且与离线安装的操作系统相同版本的操作系统,包括指令集类型相同。 安装下载工具 查询是否已经安装下载工具 yum…...

【C语言】17. 数据在内存中的存储
文章目录 一、整数在内存中的存储二、⼤⼩端字节序和字节序判断1、什么是⼤⼩端?2、为什么有⼤⼩端?3、练习1)练习12)练习23)练习34)练习45) 练习56)练习6 三、浮点数在内存中的存储1、浮点数的…...

二叉树概述
目录 一、二叉树的基本结构 二、二叉树的遍历 1.前序 2.中序 3.后序 4.层序遍历 三.计算二叉树的相关参数 1.计算节点总个数 2.计算叶子节点的个数 3.计算树的高度 4.计算第k层的子树个数 5.查找树中val为x的节点 四.刷题 1.单值二叉树 2.检查两棵树是否相同 3.一…...

【开源免费】基于SpringBoot+Vue.JS图书进销存管理系统(JAVA毕业设计)
博主说明:本文项目编号 T 082 ,文末自助获取源码 \color{red}{T082,文末自助获取源码} T082,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析…...

惠普M126a连接共享打印机故障0x000006ba,系统不支持请求的命令,print spooler重复停止
故障说明:直连惠普M126a打印机正常打印,通过共享连接的报故障。 目前已知有三种故障: 1、0x000006ba报错2、系统不支持请求的命令3、print spooler重复停止(或者,print spooler没有停止依然报故障) 解决方…...

Chainlit集成LlamaIndex实现一个通过用户聊天对话的酒店预定系统
Agent 简介 “Agent”是一个自动推理和决策引擎。它接受用户输入/查询,并为执行该查询做出内部决策,以便返回正确的结果。关键的代理组件可以包括但不限于: 把复杂的问题分解成小问题选择要使用的外部工具+调用工具的参数计划一系列的任务将以前完成的任务存储在内存模块中…...

计算机网络之网络层超详细讲解
个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 计算机网络之网络层超详细讲解 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记,欢迎大家在评论区交流讨论💌 …...

代码随想录算法训练营day51|动态规划part13
回文子串 回文子串这里的递推式不太一样,dp[i] 和 dp[i-1] ,dp[i 1] 看上去都没啥关系。所以要回归到回文的定义 而我们发现,判断一个子字符串(字符串下标范围[i,j])是否回文,依赖于,子字符串…...

ESP8266自制桌宠机器狗
看到别人的桌宠机器狗有没有想要拥有一台的冲动,其实我们可以使用少量的资金自制一台机器狗 1 硬件 esp8266芯片 舵机 超声波传感器 2 接线 ESP8266配件...

【力扣】409.最长回文串
问题描述 思路解析 因为同时包含大小写字母,直接创建个ASCII表大小的桶来标记又因为是要回文子串,所以偶数个数的一定可以那么同时,对于出现奇数次数的,我没需要他们的次数-1,变为偶数,并且可以标记出现过…...

git 拉取代码时报错 gitignore Please move or remove them before you merge.
git 拉取代码时报错, The following untracked working tree files would be overwritten by merge: .gitignore Please move or remove them before you merge. 当你在使用 Git 进行代码拉取(通常是执行 git pull 或 git merge 命令)时遇到这…...

19,[极客大挑战 2019]PHP1
这个好玩 看到备份网站字眼,用dirsearch扫描 在kali里打开 爆破出一个www.zip文件 访问一下 解压后是这个页面 class.php <?php include flag.php; error_reporting(0); class Name{ private $username nonono; private $password yesyes; publi…...

MQTT消息服务器mosquitto介绍及说明
Mosquitto是一个开源的消息代理软件,支持MQTT协议(消息队列遥测传输协议)。MQTT是一种轻量级的发布/订阅消息传输协议,专为低带宽、不可靠网络环境下的物联网设备通信而设计。以下是关于Mosquitto服务器的一些介绍和说明ÿ…...