Unity 安卓平台签名打包错误compiled by a more recent version of the Java Runtime (class file version 53.0)

解决Unity2017.4.40c1版本在安卓平台使用签名打包APK时遇到的错误:Failed to sign APK package。通过更换安卓SDK build-tools版本从30.0.1到28.0.3成功解决问题。

Unity2017.4.40c1版本安卓平台使用签名打包APK出现错误:

CommandInvokationFailure: Failed to sign APK package.
D:\XXX\XXX\XXX\AndroidSDK\android-sdk_r24.4.1-windows\android-sdk-windows\build-tools\30.0.0-rc1\apksigner.bat sign --ks

java.lang.UnsupportedClassVersionError: com/android/apksigner/ApkSignerTool has been compiled by a more recent version of the Java Runtime (class file version 53.0), this version of the Java Runtime only recognizes class file versions up to 52.0

开始看提示一直以为是jdk的问题,卸载重装了,也用了java unstall 防止卸载不干净.后来在网上找才发现是 安卓SDK build tool的问题.

刚开始是30.0.1版本,换成了28.0.3版本就好了.
下面是切换安装版本的地方[点下右下角的勾,就能自由选择版本了]
勾选右下角,就能自由选择版本了
勾选右下角,就能自由选择版本了

### 问题分析 当出现错误信息 `Could not load custom lint check jar file` 并伴随 `UnsupportedClassVersionError`,提示 `class file version 61.0` 与 `class file versions up to 55.0` 不兼容时,表示 Unity 导出的 Android 工程中所使用的某个 lint 检查 JAR 文件是使用 Java 17 编译的,而当前构建环境的 Java 运行时版本仅为 Java 11(支持类文件版本 55.0)[^1]。 ### 解决方案 #### 1. 升级 Java 运行时版本至 Java 17 或更高 Unity 项目在导出 Android 工程时可能依赖了使用较新 Java 版本编译的插件或 lint 检查工具。为确保兼容性,应将构建环境的 Java 版本升级至 Java 17 或更高版本,以支持类文件版本 61.0。 ```bash # 查看当前 Java 版本 java -version ``` 前往 [Oracle JDK](https://www.oracle.com/java/technologies/downloads/) 或 [Adoptium](https://adoptium.net/) 下载并安装 Java 17 或更高版本。 #### 2. 配置 Unity 使用指定版本的 JDK Unity 默认可能使用的是系统中已安装的旧版 Java。为避免版本不一致,可在 Unity 的构建设置中指定使用 Java 17。 在 Unity 编辑器中: - 打开 **Preferences**(Windows > Preferences) - 选择 **External Tools** - 设置 **JDK** 路径为 Java 17 的安装目录 #### 3. 修改 Gradle 构建配置以兼容 Java 版本 若项目使用 Gradle 构建,确保 `build.gradle` 中的 `compileOptions` 设置为与运行时兼容的 Java 版本,例如: ```groovy android { compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } } ``` 此配置确保生成的类文件版本为 55.0(对应 Java 11),以避免运行时版本过低导致的兼容性问题。 #### 4. 检查并替换不兼容的 lint 检查 JAR 文件 若问题仅出现在特定的 lint 检查 JAR 文件中,可尝试手动替换该 JAR 文件,确保其是由 Java 11 或更早版本编译生成。使用 `javap` 工具查看 JAR 文件中类文件的主版本号: ```bash javap -verbose YourClass.class | grep "major version" ``` 若主版本号为 61,则表示该类文件由 Java 17 编译,需替换为使用 Java 11 编译的版本。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值