Se encontró más de un archivo con la ruta independiente del sistema operativo 'META-INF / proguard / androidx-annotations.pro'

79

Estoy probando Android WorkManager , el código arroja un error " Se encontró más de un archivo con la ruta independiente del sistema operativo 'META-INF / proguard / androidx-annotations.pro " al ejecutarlo, probé la siguiente respuesta , no fue útil.

Dependencias de WorkManager

build.gradle (aplicación)

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "rock.dmx.xaro.workmanagerexample"
        minSdkVersion 19
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }


}

dependencies {
    def work_version = "1.0.0-alpha09"
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation "android.arch.work:work-runtime:$work_version"
}
bk7
fuente

Respuestas:

167

Este es un problema conocido en este momento, las notas de la versión de componentes de arquitectura describen el problema y proporcionan una solución para solucionarlo hasta la alpha10versión de la biblioteca del administrador de trabajo:

Problema conocido

Si se encuentra con el siguiente problema: "Se encontró más de un archivo con la ruta independiente del sistema operativo 'META-INF / proguard / androidx-annotations.pro'", coloque lo siguiente en su archivo gradle como una solución temporal mientras arreglamos el problema en alpha10:

 android {
     packagingOptions {
         exclude 'META-INF/proguard/androidx-annotations.pro'
     }
 }

Entonces, en su caso, la sección de Android debería ser la siguiente:

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "rock.dmx.xaro.workmanagerexample"
        minSdkVersion 19
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    // Temporary fix until alpha10
    packagingOptions {
        exclude 'META-INF/proguard/androidx-annotations.pro'
    }
}

El problema debe tratarse correctamente en la 1.0.0-alpha10versión de WorkManager.

TSB99X
fuente
Este es solo otro caso que muestra lo estúpido que es el ecosistema de desarrollo de Android.
syloc
En mi caso tuve que agregar exclude 'META-INF/proguard/coroutines.pro'
opciones
12

Recibí el mismo error cuando agregué lo siguiente a la sección de dependencias build.gradle de mi aplicación:

implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"

Después de la migración a AndroidX :

  1. En Android Studio, en el menú Refactor , seleccione Migrar a AndroidX ...
  2. mejor marque la opción de hacer una copia de seguridad de su proyecto como un archivo zip en caso de que la migración falle,
  3. y luego, después de hacer clic en Migrar , podrá elegir la ubicación para guardar la copia de seguridad zip.

ahora puedo construir sin problemas hasta ahora.


Mi configuración

Android Studio 3.2.1
JRE: 1.8.0_152-release-1136-b06 x86_64
JVM: VM de servidor OpenJDK de 64 bits de JetBrains
macOS 10.13.6

Ahmed AlAskalany
fuente
7

Puede usar add in build.gradle (aplicación) (respondido por TheStrikeBone )

android {
    packagingOptions {
        exclude 'META-INF/proguard/androidx-annotations.pro'
    }
}

O rebajar la android.arch.workversión a1.0.0-alpha08

dependencies {
    implementation 'android.arch.work:work-runtime:1.0.0-alpha08'
}
Ahmad Aghazadeh
fuente
5

Agregar esto a mi archivo build.gradle de aplicaciones resolvió mi problema.

android {
  packagingOptions {
    exclude 'META-INF/proguard/androidx-annotations.pro'
    exclude 'META-INF/DEPENDENCIES'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/license.txt'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/notice.txt'
    exclude 'META-INF/ASL2.0'
  }
}
Gathua Kiragu
fuente
1
¿Puedes explicar más para entender? Gracias.
Shanteshwar Inde
0

En mi caso, resuelvo el problema configurando androidx.room para usar la misma versión que androidx.lifecycle

Jenkyn
fuente
0

Como principiante, tuve este problema mientras usaba un proyecto prefabricado en algún tutorial, y la solución anterior no funcionó para mí.

Entonces, en caso de que alguien se enfrente al mismo problema.

Tuve que actualizar la versión de gradle en el build.gradlearchivo del proyecto:

buildscript {

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.6.1'        
    }
}
...

Luego tuve que actualizar gradle wrapper en gradle-wrapper.properties:

#Wed Sep 26 11:30:41 IST 2018
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

# Delete this
#distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip

# Add this
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip

Luego, lo configuro useAndroidXcomo verdadero en el gradle.propertiesarchivo:

android.useAndroidX=true

Eso es. Espero que ayude.

Ahmed Shendy
fuente
0

Siempre busque primero las implementaciones en Gradle. tal vez dos implementaciones chocan entre sí ... tal vez no eliminó la vista de la tarjeta v7 y agregó la vista de la tarjeta androidx, algo así y luego pruebe otras cosas.

Tengo esa situación y la eliminación de la implementación anterior resolvió el problema.

Feliz codificación Nenad

Nenad Štrbić
fuente