Android Studio复制项目生成签名APK提示META-INF文件条目碰撞错误
错误原因
- 核心是项目依赖同时引入了AndroidX和旧版Android Support Library,两个库打包时会生成同名的
META-INF/*.version元数据文件,签名打包时系统检测到重复文件就会抛出碰撞错误。debug模式下不会校验META-INF文件重复,所以模拟器运行正常。 - 你提供的依赖中,
com.android.support:design:28.0.0是旧版support库,和你引入的androidx.appcompat等AndroidX库冲突,同时部分第三方依赖也可能隐式引入旧版support组件,进一步加重冲突。
解决方案
方案1:彻底修复(推荐)
统一依赖库为AndroidX,移除所有旧版support依赖:
- 把
implementation 'com.android.support:design:28.0.0'替换为对应AndroidX版本:
implementation 'com.google.android.material:material:1.4.0'
- 打开Android Studio的
Refactor > Migrate to AndroidX功能,一键重构所有遗留support代码为AndroidX,工具会自动处理依赖替换和代码导包修改。 - 清理项目后重新构建即可。
方案2:临时规避(快速解决,适合不想改代码的场景)
在app/build.gradle的android闭包中添加打包排除规则,直接跳过冲突的META-INF文件:
android { // 原有配置不变,新增以下packagingOptions packagingOptions { exclude 'META-INF/android.support.design_material.version' // 如果后续还有其他同类型冲突,可以批量排除所有.version文件 exclude 'META-INF/*.version' } }
这些元数据文件只记录库版本信息,排除后不会影响应用的正常运行。
额外排查项
如果执行完上述操作还是报错,按以下步骤检查:
- 删除项目根目录下的
.gradle缓存文件夹,再执行Build > Clean Project+Build > Rebuild Project - 检查
libs目录下是否存在旧版support相关的jar包,如有重复直接删除即可。
内容的提问来源于stack exchange,提问作者AZIN
相关产品推荐
相关产品推荐

