Solución:
La excepción significa que había clases duplicadas en 2 o más dependencias diferentes y el compilador no podría distinguir cuál de ellas debería usarse en run-time
y se lanzó la excepción.
Más amenudo, La duplicidad ocurre cuando intenta importar módulos que llevan sus bibliotecas requeridas (dependencias transitivas)
Tienes que exclude
clases duplicadas de bibliotecas en el build.gradle
. Como muestra Log, support-core-ui
y support-compat
los módulos tienen clases duplicadas.
apply plugin: 'com.android.application'
android {
...
defaultConfig {
...
}
buildTypes {
...
}
configurations {
all { // You should exclude one of them not both of them
exclude group: "com.android.support", module: "support-core-ui"
exclude group: "com.android.support", module: "support-compat"
}
}
}
A veces no necesita excluir nada y solo necesita cambiar el módulo importado a aquel que no trae sus dependencias.
Otra situacion que causa clases duplicadas es cuando has añadido *.jar
al proyecto libs
directorio. Por lo tanto, debe eliminarlos si no se comienzan a usar en el proyecto.
project->app->libs->*.jar
Veo que hay algunas soluciones mencionadas, el uso de estas 2 líneas resolverá el problema, pero si ha migrado a Androidx
estaría habilitado por defecto.
android.useAndroidX=true
android.enableJetifier=true
Jetifier es
La herramienta Jetifier migra bibliotecas dependientes de la biblioteca de soporte para confiar en los paquetes AndroidX equivalentes. La herramienta le permite migrar una biblioteca individual directamente, en lugar de usar el complemento gradle de Android incluido con Android Studio.
Y para obtener más información, eche un vistazo a Excluir dependencias transitivas.
A medida que una aplicación crece en alcance, puede contener una serie de dependencias, incluidas dependencias directas y dependencias transitivas (bibliotecas de las que dependen las bibliotecas importadas de su aplicación). Para excluir dependencias transitivas que ya no necesita, puede utilizar el
exclude
palabra clave
Si tiene problemas para excluir clases, consulte este hilo: ¿Cómo excluyo …
Vea si la adición de esta dependencia funciona:
implementation 'com.android.support:support-v4:28.0.0'
Vaya a gradle.properties y escriba estas dos líneas de código:
android.useAndroidX=true
android.enableJetifier=true