构建APK遇Duplicate entry: META-INF错误,请求技术支援
解决APK构建时META-INF/MANIFEST.MF重复条目错误
嘿,我之前也踩过一模一样的坑!折腾了好几天才搞定,给你几个亲测有效的解决方案,试试看:
首先先明确你的错误信息:
任务':app:buildProductionBuildDebugPreBundle'执行失败。
java.util.zip.ZipException: duplicate entry: META-INF/MANIFEST.MF
方案1:用packagingOptions处理重复文件
这是最直接的解决办法,在app模块的build.gradle里添加打包配置,告诉Gradle如何处理重复的MANIFEST.MF:
android { // 其他配置... packagingOptions { // 直接排除所有重复的MANIFEST.MF exclude 'META-INF/MANIFEST.MF' // 或者如果需要保留其中一个版本,用pickFirst // pickFirst 'META-INF/MANIFEST.MF' } }
添加后同步项目,重新构建试试,大部分情况下这个方法就能解决问题。
方案2:排查并解决依赖冲突
重复的MANIFEST.MF通常是因为第三方库依赖了相同的子库,导致重复打包。你可以先查看项目的依赖树:
在终端执行:
./gradlew app:dependencies
仔细找有没有重复的依赖项(比如两个不同版本的同一个库),找到后在依赖声明里排除冲突部分,比如:
implementation('com.example:problem-library:2.0.0') { exclude group: 'com.example', module: 'conflicting-submodule' }
方案3:彻底清理项目缓存
有时候Android Studio的缓存会导致奇怪的构建问题,试试彻底清理:
- 打开Android Studio,点击
File->Invalidate Caches... - 勾选
Invalidate and Restart,等待IDE重启 - 手动删除app模块下的
build文件夹,以及项目根目录的.gradle文件夹 - 重新同步项目并构建
方案4:检查多模块项目的配置
如果是多模块项目,检查其他library模块的build.gradle有没有重复的打包/签名配置,确保所有模块的打包逻辑统一,避免重复生成MANIFEST.MF。
如果这些方法都不行,你可以把app模块build.gradle里的依赖和打包配置部分贴出来,大家能帮你更精准定位问题!
内容的提问来源于stack exchange,提问作者Ehsan Anjum
相关产品推荐
相关产品推荐

