web-dev-qa-db-fra.com

Erreur: L'exécution a échoué pour la tâche ': Android: transformClassesAndResourcesWithProguardForRelease'

Chaque fois que je reçois cette erreur lors de l’exécution de mon projet. Je peux faire un nettoyage, puis réexécuter, et cela fonctionne. Mais ce n'est pas une solution optimale. Des idées?

Error:Execution failed for task ':Android:transformClassesAndResourcesWithProguardForRelease'.

Java.io.IOException: impossible de renommer Android\build\intermediates\transforme\proguard\release\folder\3\1f\main\classes.jar en Android\build\intermediates\transforme\proguard\release\jars\3\1f\classes.jar

43
Z0q

Ce bogue survient lorsque les versions de SDK, Build Tools et Gradle Plugins ne correspondent pas (en termes de compatibilité). La solution consiste à vérifier si vous utilisez les versions les plus récentes. Les plugins Gradle sont placés dans le fichier build.gradle du projet. Les autres versions se trouvent dans le fichier build.gradle du module. Pour exemple, pour SDK 23, vous devez utiliser Build Tools 23.0.1 et gradle plugins version 1.3.1.

Nettoyez le projet après avoir modifié les paramètres. (Résolu mon problème et je ne l'ai jamais revu.)

renvoie cette question

38
Blue_Alien

Supprimez les lignes de proguard-rules.txt qui contient:

-injars, -outjars ou -libraryjars 

et reconstruire.

4
user1367713

Vous devriez essayer ceci: ajouter dans proguard-rules.pro

-keepattributes EnclosingMethod
0

Dans mon cas, le problème a été résolu en rétrogradant la version de Proguard utilisée par Gradle pour générer l'apk signé. Vous pouvez le rétrograder en plaçant ce bloc dans le fichier build.gradle au niveau du projet. Placez-le dans le bloc buildscript. 

configurations.all {
    resolutionStrategy {
        force 'net.sf.proguard:proguard-gradle:5.2.1'
    }
}

Vous pouvez vérifier la version actuelle de Proguard en exécutant cette commande dans le dossier racine du projet:

./gradlew buildEnvironment | grep proguard

Voici une partie du stack stack de Proguard pour aider les autres à trouver le problème que je rencontrais. 

Caused by: Java.io.IOException: Java.lang.NullPointerException
at com.Android.build.gradle.internal.transforms.ProGuardTransform.doMinification(ProGuardTransform.Java:283)
at com.Android.build.gradle.internal.transforms.ProGuardTransform.access$000(ProGuardTransform.Java:63)
at com.Android.build.gradle.internal.transforms.ProGuardTransform$1.run(ProGuardTransform.Java:173)
at com.Android.builder.tasks.Job.runTask(Job.Java:48)
at com.Android.build.gradle.tasks.SimpleWorkQueue$EmptyThreadContext.runTask(SimpleWorkQueue.Java:41)
at com.Android.builder.tasks.WorkQueue.run(WorkQueue.Java:225)
Caused by: Java.lang.NullPointerException
at proguard.optimize.info.NonEmptyStackReturnMarker.setReturnsWithNonEmptyStack(NonEmptyStackReturnMarker.Java:102)
at proguard.optimize.info.NonEmptyStackReturnMarker.markReturnWithNonEmptyStack(NonEmptyStackReturnMarker.Java:95)
at proguard.optimize.info.NonEmptyStackReturnMarker.visitSimpleInstruction(NonEmptyStackReturnMarker.Java:76)
...
at proguard.optimize.Optimizer.execute(Optimizer.Java:649)
at proguard.ProGuard.optimize(ProGuard.Java:328)
at proguard.ProGuard.execute(ProGuard.Java:127)
at com.Android.build.gradle.internal.transforms.BaseProguardAction.runProguard(BaseProguardAction.Java:54)
at com.Android.build.gradle.internal.transforms.ProGuardTransform.doMinification(ProGuardTransform.Java:254)
... 5 more
0
Shumoapp

dans mon cas, il était okhttp règles de proguard après les avoir ajoutées cela a bien fonctionné 

#OKhttp RULES START
-dontwarn okhttp3.**
-dontwarn okio.**
-dontwarn javax.annotation.**
#OKhttp RULES END

#picasso rules START
-dontwarn com.squareup.okhttp.**
#picasso rules END
0
Mateen Chaudhry