Android构建报错:app:lintVitalRelease任务执行失败Jetifier转换异常
Android 构建lintVitalRelease任务失败修复
问题现象
项目构建耗时1分18秒后终止,终端提示BUILD FAILED,核心抛出错误:Execution failed for task ':app:lintVitalRelease'
错误链路拆解
- 配置解析阶段无法拉取并转换
:image_picker_android:debugUnitTestRuntimeClasspath配置下的全部依赖产物 - 处理传递依赖
org.bouncycastle:bcprov-jdk15on:1.68的bcprov-jdk15on-1.68.jar包时,匹配构建属性{artifactType=processed-jar, org.gradle.category=library, org.gradle.libraryelements=jar, org.gradle.status=release, org.gradle.usage=java-runtime}失败 - 失败点出在JetifyTransform转换环节,对应本地缓存的文件路径为
/Users/thor/.gradle/caches/modules-2/files-2.1/org.bouncycastle/bcprov-jdk15on/1.68/46a080368d38b428d237a59458f9bc915222894d/bcprov-jdk15on-1.68.jar - 直接触发原因:Jetifier转换该jar时抛出
IllegalArgumentException,提示Unsupported class file major version 59,即当前项目使用的Jetifier版本不支持Java 15版本编译生成的类文件
可落地的修复方案
- 临时快速出包方案
如果需要紧急打release包验证,可在app模块的build.gradle文件中添加如下配置,跳过release构建阶段的lint检查:
android { lint { checkReleaseBuilds false abortOnError false } }
注意:该方案仅为临时绕过,不建议作为长期修复手段,可能会把代码中的兼容问题带到线上
- 永久根因修复
- 升级Android Gradle插件、Gradle版本到官方最新稳定版,同步更新Jetifier相关配置,高版本构建工具链已经兼容高版本Java字节码的Jetifier转换逻辑
- 排查项目依赖树,找到
org.bouncycastle:bcprov-jdk15on:1.68的引入来源,要么将该依赖降级到使用Java 8/11编译的低版本,要么通过exclude规则排除该传递依赖,替换为适配当前构建链的加密库版本 - 统一项目的JDK版本为AGP对应要求的JDK版本(比如AGP 7.0+对应JDK 11,AGP 8.0+对应JDK 17),避免依赖中混入高版本JDK编译的产物
问题定位辅助参数
构建时追加对应参数可以拿到更详细的错误信息,方便定位特殊场景的问题:
- 追加
--stacktrace:输出完整错误调用堆栈 - 追加
--info/--debug:输出全流程构建详细日志 - 追加
--scan:生成可视化的完整构建分析报告
内容的提问来源于stack exchange,提问作者Mr. Tayyab MuGhal
相关产品推荐
相关产品推荐

