Android SDK Platform 33构建应用ProGuard失败问题咨询
问题根因
不需要同时升级独立ProGuard+关闭multiDexEnabled,这套操作只是临时规避,不是标准解法。两个报错的核心原因是现有构建工具链版本整体和compileSdk 33完全不匹配:
初始ProGuard报错
java.io.IOException: Can't read [android.car.jar] (Unsupported version number [55.0] (maximum 54.0, Java 10))是因为Android SDK Platform 33内置的android.car.jar采用Java 11(字节码版本55.0)编译,当前构建流程里的旧版ProGuard最高仅支持Java 10(字节码版本54.0),无法解析该Jar包的类结构。手动引入的net.sf.proguard:proguard-gradle:6.1.1并未完整支持Java 11字节码,只是绕开了部分读取校验,才会后续触发MultiDex相关任务报错。
标准修复步骤(无需关闭MultiDex)
按顺序调整配置即可正常构建,所有调整均为官方兼容方案,不影响minSdk 19的覆盖要求:
- 升级Gradle和Android Gradle Plugin(AGP)版本:当前使用的Gradle 4.6为2018年发布的旧版本,配套AGP最高仅为3.2,完全不支持compileSdk 33的构建逻辑。最少升级到AGP 7.2.2 + Gradle 7.3.3,该版本为官方最后一版稳定支持minSdk 14+的构建套件,内置的R8(AGP默认替代ProGuard的代码缩减/混淆工具)完整支持Java 11/17字节码处理,无需手动引入独立ProGuard依赖。
- 同步升级构建工具版本:当前
buildToolsVersion 28.0.3和compileSdk 33跨度过大,直接修改为buildToolsVersion "33.0.2"即可,使用和compileSdk同大版本的构建工具是官方要求的标准配置。 - 替换构建用JDK版本:JDK 1.7无法运行AGP 7.x的构建流程,将构建环节使用的JDK更换为JDK 11即可。注意该调整仅针对构建环境,不需要修改应用业务代码的语法版本,可通过如下配置保留Java 8的代码编译兼容:
android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } }
- 保留MultiDex开启配置:升级完上述工具链后,
multiDexEnabled true可以正常开启,不需要关闭。minSdk 19本身原生支持MultiDex机制,不存在运行时兼容问题。之前碰到的transformClassesWithMultidexlistForDebugAndroidTest任务报错,是手动引入的第三方独立ProGuard和旧版AGP的MultiDex任务逻辑冲突导致,和SDK 33本身无关。
注意:AGP 3.4及以上版本已经默认使用R8替代ProGuard完成混淆、代码缩减、资源压缩工作,手动引入
net.sf.proguard组下的独立ProGuard依赖会覆盖AGP内置的混淆实现,极易触发版本不兼容的构建异常,非特殊场景不要添加该依赖。
内容的提问来源于stack exchange,提问作者Kotaro
相关产品推荐
相关产品推荐

