web-dev-qa-db-fra.com

transformClassesAndResourcesWithProguardForRelease FAILED

J'essaie de créer mon application Android avec Gradle dans la console . Mais l'erreur ci-dessous concernant la tâche ': app: transformClassesAndResourcesWithProguardForRelease':

build.gradle:

buildscript {
    repositories {
        jcenter()
        maven { url "https://jitpack.io" }
    }
    dependencies {
        classpath 'com.Android.tools.build:gradle:2.2.3'
        classpath 'com.google.gms:google-services:3.0.0'
    }
}

allprojects {
    repositories {
        jcenter()
        maven { url "https://jitpack.io" }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

app/build.gradle

apply plugin: 'com.Android.application'

Android {
    compileSdkVersion 24
    buildToolsVersion '24.0.2'
    defaultConfig {
        applicationId "com.XXX.XXX"
        minSdkVersion 14
        targetSdkVersion 24
        versionCode 1
        versionName "0.1.0"
        testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }
    buildTypes {
        release {
            shrinkResources true
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-Android.txt'),
                    'proguard-rules.pro'
        }
    }
}


dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.Android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.Android.support', module: 'support-annotations'
    })
    compile('com.squareup.retrofit2:retrofit:2.1.0') {
        exclude module: 'okhttp'
    }
    compile 'com.Android.support:appcompat-v7:24.2.1'
    compile 'com.Android.support:design:24.2.1'
    compile 'com.squareup.okhttp3:okhttp:3.4.1'
    compile 'com.squareup.retrofit2:converter-moshi:2.1.0'
    compile 'moe.banana:moshi-jsonapi:2.2.0'
    compile 'com.squareup.moshi:moshi-adapters:1.3.1'
    compile 'com.google.Android.gms:play-services-maps:9.6.0'
    compile 'com.Android.support:multidex:1.0.1'
    compile 'com.google.firebase:firebase-core:9.6.0'
    compile 'com.google.firebase:firebase-crash:9.6.0'
    testCompile 'junit:junit:4.12'
}

apply plugin: 'com.google.gms.google-services'

gradle-wrapper.properties

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.Zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

./gradlew build --stacktrace

C'est l'exception que je reçois:

org.gradle.api.tasks.TaskExecutionException: Execution failed for task
':app:transformClassesAndResourcesWithProguardForRelease'.
62
M. Mirmousavi

Essayez d’ajouter ce code à vos règles proGuard, cela a fonctionné pour moi.

-ignorewarnings
-keep class * {
    public private *;
}

La réponse a été publiée ici: L'exécution a échoué pour la tâche ': app: transformClassesAndResourcesWithProguardForRelease

95
Johnie Ndosh Spax

ajouter ce code à ..your-project/app/proguard-rules.pro 

 -ignorewarnings

votre apk signé sera généré avec succès ...

Mettre à jour :

Il est préférable de corriger vos messages d'avertissement à l'aide de -dontwarn ou -keep clés sur votre proguard-rules.pro... Parce que si vous utilisez (peut-être vos bibliothèques) réflexion Java dans votre code l'application sera plantée ...

51
Richi

Cela a fonctionné pour moi, je devais également ajouter un fichier de suivi dans un fichier proguard.txt

#### -- Picasso --
 -dontwarn com.squareup.picasso.**

 #### -- OkHttp --

 -dontwarn com.squareup.okhttp.internal.**

 #### -- Apache Commons --

 -dontwarn org.Apache.commons.logging.**

     -ignorewarnings 
-keep class * {
public private protected *;
}
6
Haris Durrani

Je n'ai rien changé rien que commentaire

// shrinkResources true
// minifyEnabled true

vous ne souhaitez pas modifier les fichiers de proguard que j'ai déjà recherchés après 2 jours perdus 

4
Brijesh Tanwar
buildTypes {
    release {
        shrinkResources true
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-Android.txt'),
                'proguard-rules.pro'
    }
}

Veuillez supprimer le code mentionné ci-dessus dans votre note. Cela a fonctionné pour moi . Ce n'est que pour le problème donné.

1
Ayaz Muhammad

Utilisez ce code dans 'proguard-rules.pro' peut être résolu.

-keep class * {
public private protected *;
}

ou

-keep class * {*;}
  • remarque: les commandes ci-dessus ignorent les obscurcissements

  • peut utiliser ceci à la place ci-dessus pour sauver l'état confus

    -keepnames class * {*;}

1
Ali Bagheri

J'ai reçu le même message d'erreur lorsque j'essayais de construire la version dans Android après l'installation react-native-firebase .

Ce sont les étapes que j'ai suivies, 

  1. Effectuez toutes les configurations mentionnées dans la documentation de react-native-firebase. 
  2. Construire une application Android en utilisant cette commande

    ./gradlew assembleRelease

  3. Vous avez ce message d'erreur.

ECHEC: La construction a échoué avec une exception.

  • Ce qui s'est mal passé: L'exécution a échoué pour la tâche ': app: transformClassesAndResourcesWithProguardForRelease' .

    Le travail a échoué, voir les journaux pour plus de détails

Résolution de ce problème en modifiant cette ligne de code dans Android/app/build.gradle

minifyEnabled true

pour ça

minifyEnabled enableProguardInReleaseBuilds

Ce fut le seul changement que j'ai fait. Ça marche pour moi.

0
Janaka Pushpakumara

Dans Android Studio, cliquez sur "Rebuild Project" dans le menu "Build".

0
Niclin

ajoutez - ignorewarnings dans votre fichier proguard et ne conservez que les classes que vous ne voulez pas masquer. Certaines bibliothèques suggèrent de conserver certaines de leurs classes si vous utilisez des règles proguard. Visitez vos bibliothèques pour plus de détails

0
user3135923

Je lutte avec proguard-rules.pro depuis un certain temps et je ne suis en aucun cas un professionnel ici! Je poste mon fichier pour montrer que vous ne devez pas conserver la classe * sans paramètre car cela désactive tout obscurcissement. Vous pouvez cependant protéger chaque classe qui s'étend d'une certaine classe ou toute classe qui implémente une certaine interface. Vous pouvez également protéger toute classe ayant un constructeur ayant des éléments spécifiques ..__ Veuillez noter que je n'ai pas commenté chaque ligne car je ne suis pas sûr à 100% de ce que tout fait - c'est plutôt une supposition éclairée . Le projet inclut ksoap2 (okhttp3, okio, XmlPull), ce à quoi servent de nombreuses règles.

Peut-être que ceci peut être un point de départ pour vous - vous devrez peut-être encore mettre quelques règles supplémentaires pour vos cours.

-Android
-dontpreverify
-repackageclasses ''
-allowaccessmodification
-optimizations !code/simplification/arithmetic
-keepattributes *Annotation*
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable

-keep public class * extends Android.app.Activity
-keepclasseswithmembers class * extends com.way4net.oner.lifa.plugin.ThemedFragment
-keepclasseswithmembers class * extends com.way4net.oner.lifa.plugin.ThemedActivity
-keep public class * extends Android.app.Application
-keep public class * extends Android.app.Service
-keep public class * extends Android.content.BroadcastReceiver
-keep public class * extends Android.content.ContentProvider
-keepattributes Signature #there were 1 classes trying to access generic signatures using reflection emfehlung von proguard selbst

-keep public class * extends Android.view.View {
      public <init>(Android.content.Context);
      public <init>(Android.content.Context, Android.util.AttributeSet);
      public <init>(Android.content.Context, Android.util.AttributeSet, int);
      public void set*(...);
}

-keepclasseswithmembers class * {
     public <init>(Android.content.Context, Android.util.AttributeSet);
 }

-keepclasseswithmembers class * {
    public <init>(Android.content.Context, Android.util.AttributeSet, int);
}

-keepclassmembers class * extends Android.content.Context {
    public void *(Android.view.View);
    public void *(Android.view.MenuItem);
}

-keepclassmembers class * implements Android.os.Parcelable {
    static ** CREATOR;
}

-keepclassmembers class **.R$* {
    public static <fields>;
}

-keepclassmembers class * {
    @Android.webkit.JavascriptInterface <methods>;
}

-dontwarn okhttp3.**
-dontwarn okio.**
-dontwarn Android.support.v4.**
#-dontwarn javax.annotation.**
#-dontwarn org.xmlpull.v1.**
-dontnote Android.net.http.*
-dontnote org.Apache.commons.codec.**
-dontnote org.Apache.http.**
-dontnote okhttp3.**
-dontnote org.kobjects.util.**
-dontnote org.xmlpull.v1.**
-keep class okhttp3.** {
      *;
 }

-keep class org.xmlpull.v1.XmlSerializer {
    *;
}
-keep class org.xmlpull.v1.XmlPullParser{
    *;
}
-dontwarn org.xmlpull.v1.XmlPullParser

-keep class org.xmlpull.v1.XmlSerializer {
    *;
}
-dontwarn org.xmlpull.v1.XmlSerializer

-keep class org.kobjects.** { *; }
-keep class org.ksoap2.** { *; }
-keep class okio.** { *; }
-keep class org.kxml2.** { *; }
-keep class org.xmlpull.** { *; }

0
FrankKrumnow