Android构建APK失败:重复META-INF文件问题求助
解决APK构建时META-INF重复文件冲突问题
我之前也碰到过一模一样的问题,这大概率是多个依赖库重复打包了同一个lifecycle版本文件导致的,给你几个亲测有效的解决办法:
1. 精准排除冲突的特定文件
你之前用exclude 'META-INF/**'可能范围太广或者匹配规则没生效,不如直接指定冲突的那个具体文件试试。在app模块的build.gradle里修改packagingOptions:
android { packagingOptions { exclude 'META-INF/android.arch.lifecycle_runtime.version' } }
这样只移除引发冲突的那个版本文件,不会影响其他必要的META-INF内容。
2. 排查并解决依赖冲突
这个错误本质上是依赖重复引入导致的,你可以先查看项目的依赖树,找出重复的lifecycle相关依赖:
./gradlew app:dependencies
执行后在输出里找android.arch.lifecycle:runtime相关的条目,看是不是有多个版本或者被第三方库间接引入的情况。
如果发现某个第三方库内置了旧版的lifecycle,可以在引入该库时强制排除重复的依赖:
implementation('com.example:your-third-party-lib:x.x.x') { exclude group: 'android.arch.lifecycle', module: 'runtime' }
或者统一指定lifecycle的版本,让gradle强制使用同一个版本来避免冲突:
android { configurations.all { resolutionStrategy.force 'android.arch.lifecycle:runtime:1.1.1' // 替换成项目适配的稳定版本 } }
3. 清理缓存后重建项目
有时候Android Studio的缓存也会导致这种奇怪的冲突,试试以下步骤:
- 点击顶部菜单栏的
Build->Clean Project - 接着点击
Build->Rebuild Project - 如果还是不行,手动删除项目根目录下的
.gradle文件夹和app模块里的build文件夹,再重新同步项目并构建
内容的提问来源于stack exchange,提问作者Shikhar Deep
相关产品推荐
相关产品推荐

