Android Studio生成APK时出现LiveData$1.class重复条目错误求助
嘿,这个问题我之前帮同事踩过坑!更新到Support Library 27.1.0后出现这个duplicate entry错误,核心原因是依赖冲突——你的项目里同时存在多个包含android.arch.lifecycle.LiveData类的依赖包。
为什么会出现这个问题?
从Android Support Library 26.x版本开始,官方把Architecture Components的核心类(比如LiveData、ViewModel)整合进了support库中。当你升级到27.1.0后,如果项目里还单独引入了旧版的android.arch.lifecycle系列依赖,就会导致同一个类被多次打包,Jar合并时就触发了ZipException。
一步步解决方法:
第一步:排查重复依赖
先执行Gradle命令查看项目的依赖树,找出重复的lifecycle依赖:# Mac/Linux ./gradlew app:dependencies # Windows gradlew.bat app:dependencies在输出结果里搜索
lifecycle,看看有没有同时出现不同版本的android.arch.lifecycle:runtime或者和support库重复的条目。第二步:排除重复依赖
如果发现某个第三方库或自定义模块引入了多余的lifecycle依赖,在对应的依赖声明里添加排除规则:implementation('com.example:your-third-party-lib:1.0.0') { exclude group: 'android.arch.lifecycle', module: 'runtime' }另外,如果你之前单独引入了
android.arch.lifecycle:runtime或android.arch.lifecycle:extensions,可以尝试直接移除它们——因为27.1.0的appcompat-v7已经包含了基础的LiveData类。第三步:强制统一依赖版本
如果排查起来麻烦,可以在项目根目录的build.gradle里添加强制配置,让所有lifecycle相关依赖统一用同一个版本(选择和27.1.0匹配的版本,比如1.1.1):allprojects { configurations.all { resolutionStrategy { force 'android.arch.lifecycle:runtime:1.1.1' force 'android.arch.lifecycle:extensions:1.1.1' } } }第四步:清理缓存重新打包
最后执行清理命令,清除Gradle缓存后再尝试打包:./gradlew clean assembleRelease
内容的提问来源于stack exchange,提问作者SKY

