更新CognitoAuth至v2.6.13后发布构建遇Gradle重复Zip条目错误
解决CognitoAuth v2.6.13发布构建时的重复类编译问题
你遇到的这个问题确实是依赖冲突+ProGuard触发的问题——发布构建开启了代码混淆/压缩后,ProGuard在处理所有依赖的class文件时,检测到了重复的类com/amazonaws/cognito/clientcontext/datacollection/BuildDataCollector.class,从而抛出了编译错误。
问题根源分析
看你的依赖配置,你同时引入了两个版本的AWS SDK组件:
- 旧版本的
aws-android-sdk-cognito:2.6.3和aws-android-sdk-cognitoidentityprovider:2.6.3 - 新版本的
aws-android-sdk-cognitoauth:2.6.13
CognitoAuth的新版本已经内置了Cognito核心库中的部分类,这就导致两个依赖包中出现了完全相同的class文件。Debug构建时因为没有启用ProGuard(minifyEnabled false),Gradle只是简单合并class文件,不会主动校验重复;但发布构建开启ProGuard后,它在执行代码压缩、混淆的预处理阶段会严格检查所有输入文件,发现重复类就会直接终止构建。
解决方案
最稳妥的处理方式是统一所有AWS SDK组件的版本,AWS官方也推荐保持SDK版本一致,避免版本不兼容和类冲突问题:
- 修改根级
ext配置中的AWS版本号:
ext { supportLib = "25.3.1" googleLib = "11.6.0" amazonLib = "2.6.13" // 把旧版本2.6.3改成2.6.13 }
- 确保所有AWS依赖都使用这个统一版本变量:
// amazon libraries api "com.amazonaws:aws-android-sdk-cognito:${amazonLib}" api "com.amazonaws:aws-android-sdk-cognitoidentityprovider:${amazonLib}" api "com.amazonaws:aws-android-sdk-cognitoauth:${amazonLib}"
如果暂时无法统一版本,也可以在CognitoAuth依赖中排除重复的模块(不推荐,可能存在潜在兼容性问题):
api('com.amazonaws:aws-android-sdk-cognitoauth:2.6.13') { exclude group: 'com.amazonaws', module: 'aws-android-sdk-cognito' }
关于ProGuard的补充说明
为什么只有发布构建失败?因为:
- Debug构建默认
minifyEnabled false,ProGuard不运行,Gradle不会校验重复类(但运行时仍可能出现潜在问题) - 发布构建开启了
minifyEnabled true,ProGuard在处理代码时会严格扫描所有class文件,发现重复就抛出错误,避免后续运行时出现类加载冲突。
内容的提问来源于stack exchange,提问作者portfoliobuilder
相关产品推荐
相关产品推荐

