背景:
最近为了学习Compose,将Android Studio由4.2.1升级到Dolphin | 2021.3.1 Patch 1版本,后续build项目的时候出现错误提示
Cause: com/android/tools/idea/gradle/run/OutputBuildAction has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
解决思路1: 升级JDK版本
解决思路2:
一般来说,到这里问题就解决了,可以正常Build,但是我的项目因为gradle配置的问题,走到最后一步未能打包,具体错误是
Unable to load class 'javax.xml.bind.JAXBException'.
This is an unexpected error. Please file a bug containing the idea.log file.
经查是gradle相关错误,
发现项目中gradle配置不对应
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 。
所以,到这里大家理解两者关系了。
//这个地方是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发布7.0后,进行了同步。也就是我们在上面看到的。7.0之后就同步上了。两个版本号一致
所以在项目修改build.gradle中"classpath 'com.android.tools.build:gradle:4.0.0'"与gradle-6.1.1-all.zip对应后,顺利编译
参考链接:
CSDN: AndroidStudio编译报错记录
CSDN: Android Studio 中的Gradle版本介绍
stackoverflow:How to resolve Java Runtime (class file version 55.0)