Android多build flavour全量构建时出现PagerAdapter类重复定义错误
错误本质
该错误为典型的类重复定义冲突,仅全量构建所有flavor时触发、单flavor构建正常的原因是:不同flavor的依赖链中引入了两份不同构建产物的androidx.viewpager:viewpager库,全量构建合并dex时触发重复类校验。
定位步骤
- 分别导出不同flavor对应变体的依赖洞察结果,确认
viewpager的引入来源:
示例命令:
重点检查:是否有flavor单独声明了viewpager依赖、是否不同flavor通过第三方库传递引入了不同版本的viewpager、是否某个flavor的libs目录下单独放了viewpager的jar/aar包。# 替换为你实际的flavor变体名,分别查询所有flavor的结果 ./gradlew :app:dependencyInsight --dependency androidx.viewpager:viewpager --variant prodGameDebug
修复方案
- 强制统一全局viewpager版本
在项目根目录build.gradle中添加版本锁定规则,确保所有flavor使用同一份viewpager依赖:
allprojects { configurations.all { resolutionStrategy { // 替换为你项目实际使用的viewpager版本 force 'androidx.viewpager:viewpager:1.0.0' } } }
- 排除重复的传递依赖
如果定位到是某个flavor的第三方依赖自带了viewpager,在对应依赖声明中排除viewpager即可:
// 示例:给prodGame风味的xxx库依赖排除viewpager prodGameImplementation("com.example.xxx:xxx-sdk:2.1.0") { exclude group: 'androidx.viewpager', module: 'viewpager' }
- 清理重复的本地依赖
检查各模块的libs目录,删除重复的viewpager相关jar/aar包;同时检查是否有模块手动拷贝了androidx.viewpager包下的类到源码中,如有则删除重复类。 - 彻底清理构建缓存重试
执行以下命令清理所有缓存后重新构建:
./gradlew clean rm -rf ~/.gradle/caches/
内容的提问来源于stack exchange,提问作者Leonid Kabanen
相关产品推荐
相关产品推荐

