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'.
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
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 votreproguard-rules.pro
... Parce que si vous utilisez (peut-être vos bibliothèques) réflexion Java dans votre code l'application sera plantée ...
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 *;
}
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
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é.
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 * {*;}
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,
Construire une application Android en utilisant cette commande
./gradlew assembleRelease
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.
Dans Android Studio, cliquez sur "Rebuild Project" dans le menu "Build".
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
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.** { *; }