当出现“Duplicate class * found in modules”错误时,通常是因为存在重复的类。这种情况通常会发生在添加第三方库时。为了解决这个问题,可以尝试以下解决方案:
清除缓存并重新构建项目。可以通过在Gradle开窗口中选择“Clean project”来清除缓存并重新构建项目。
排除冲突的依赖项。使用exclude关键字从依赖项中排除冲突的依赖项。例如:
compile('com.library.module1:library:1.0.0') {
exclude group: 'org.apache.httpcomponents', module: 'httpclient'
}
更改依赖项版本。如果冲突是由于依赖项版本不兼容引起的,可以将依赖项版本更改为兼容的版本。
使用Gradle引导冲突。Gradle提供了一种引导机制,可以解决依赖项之间的冲突。例如:
configurations.all {
resolutionStrategy.force 'com.android.support:appcompat-v7:25.3.1'
}
删除重复的依赖项。如果冲突是由于添加了相同的依赖项引起的,可以删除其中一个依赖项。
使用命令进行诊断。如果以上方法仍然无法解决问题,可以使用以下命令进行诊断:
./gradlew app:dependencies
这将显示项目中的所有依赖项及其版本,以便更好地了解何时发生冲突。