Unity打包游戏触发java.io.IOException错误,修改API等级后问题仍存
问题分析
错误提示里的Unsupported version number [55.0] (maximum 54.0)是核心:android.car.jar中的类是Java 11编译生成的(字节码版本55),但你使用的Unity 2021.3.8f1配套的Android编译工具仅支持到Java 10(字节码版本54),导致编译失败。改回API30后仍报错,是因为Unity编译缓存或SDK残留配置未清理,系统仍在调用android-33的相关文件。
解决方案
1. 彻底清理Unity编译缓存
- 打开Unity编辑器,依次点击
File -> Build Settings -> Android -> Clean Build - 手动删除项目根目录下的
Library、Temp、Obj文件夹 - 重启Unity编辑器
2. 强制切换回API30配置
- 打开
Edit -> Preferences -> External Tools,确认Android SDK路径无误 - 进入
Edit -> Project Settings -> Player -> Android -> Publishing Settings:- 将
Target API Level设置为Android 11 (API level 30) - 勾选
Custom Gradle Template,打开mainTemplate.gradle,确保compileSdkVersion和targetSdkVersion均设为30
- 将
- 打开Android SDK Manager,卸载Android 13(API33)的SDK平台,仅保留Android 11(API30)相关组件
3. 若需升级到API33的兼容方案
如果后续必须满足Play Store的API等级要求,解决Java版本不兼容问题:
- 升级Unity版本到2021.3.18f1及以上(该版本开始支持Java 11编译工具,适配API33的字节码要求)
- 确保Unity的JDK配置使用编辑器自带的Embedded JDK(在
External Tools中勾选对应选项)
4. 检查Gradle编译配置
打开mainTemplate.gradle,确认Java版本配置为兼容的1.8:
android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } }
内容的提问来源于stack exchange,提问作者Niks Rodžers
相关产品推荐
相关产品推荐

