Saltar al contenido

Por qué obtengo una clase duplicada al ejecutar mi proyecto de Android

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
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *