Kotlin版本不兼容导致Release构建失败求助
Kotlin版本不兼容(元数据1.8.0 vs 预期1.4.0)Release构建失败解决方案
问题核心分析
你的问题主要源于两个关键矛盾:
- 根
build.gradle中Kotlin版本变量名不匹配,导致Kotlin Gradle插件未加载指定的1.8.0版本,默认使用了旧版插件(如1.4.x),无法解析1.8.0的元数据。 - Android Gradle Plugin(AGP)4.2.2与Kotlin 1.8.0存在兼容性冲突,AGP 4.2.2最高仅支持Kotlin 1.5.x版本。
分步解决方案
1. 修复根build.gradle的变量名错误
根build.gradle中ext块定义的是kotlinVersion(驼峰命名),但classpath中引用的是$kotlin_version(下划线命名),导致插件版本未正确加载。修改如下:
buildscript { ext { kotlinVersion = "1.8.0" // 其他变量保持不变 } dependencies { // 其他classpath配置不变 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion" // 将kotlin_version改为kotlinVersion } }
2. 调整Kotlin版本适配AGP 4.2.2
由于AGP 4.2.2不支持Kotlin 1.8.0,建议降级到AGP兼容的最高Kotlin版本1.5.31:
- 根
build.gradle中kotlinVersion改为"1.5.31" - app模块
build.gradle替换依赖配置:
dependencies { // 移除原有jdk7/jdk8的constraints,替换为统一依赖 implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.5.31" // 其他依赖保持不变 }
3. 排查Release构建的混淆影响
如果启用了minifyEnabled,先临时关闭测试是否能正常构建:
release { minifyEnabled false // 临时关闭混淆 // 其他配置不变 }
若关闭后可正常构建,说明混淆规则缺失Kotlin相关配置,需在proguard-rules.pro中添加:
# Kotlin相关混淆规则 -keep class kotlin.** { *; } -keep class kotlin.Metadata { *; } -dontwarn kotlin.** -keepclassmembers class **$WhenMappings { <fields>; } -keepclassmembers class kotlin.Metadata { public <methods>; }
4. 彻底清理缓存后重新构建
执行以下命令清理所有缓存:
./gradlew clean rm -rf ~/.gradle/caches rm -rf android/.gradle rm -rf android/app/build
再重新构建Release版本:
./gradlew assembleRelease
内容的提问来源于stack exchange,提问作者Sinbew
相关产品推荐
相关产品推荐

