Ich versuche, meine Android-Anwendung mit Gradle in der Konsole zu erstellen. Aber unter Fehler bezüglich Aufgabe ': 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
Dies ist die Ausnahme, die ich erhalte:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task
':app:transformClassesAndResourcesWithProguardForRelease'.
android
gradle
android-gradle-plugin
build.gradle
proguard
Moe Mirmousavi
quelle
quelle
Antworten:
Versuchen Sie, diesen Code zu Ihren proGuard-Regeln hinzuzufügen. Es hat bei mir funktioniert
-ignorewarnings -keep class * { public private *; }
Die Antwort wurde hier veröffentlicht: Ausführung für Aufgabe fehlgeschlagen ': app: transformClassesAndResourcesWithProguardForRelease
quelle
Fügen Sie diesen Code hinzu
..your-project/app/proguard-rules.pro
deine signierte apk wird erfolgreich generiert ...
quelle
release { shrinkResources true minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro', 'proguard.cfg' }
Es hat bei mir funktioniert. Ich musste auch Folgendes in eine pro-gaurd.txt-Datei einfügen
#### -- Picasso -- -dontwarn com.squareup.picasso.** #### -- OkHttp -- -dontwarn com.squareup.okhttp.internal.** #### -- Apache Commons -- -dontwarn org.apache.commons.logging.** -ignorewarnings -keep class * { public private protected *; }
quelle
Ich habe nichts geändert, nur Kommentar
// shrinkResources true // minifyEnabled true
Sie möchten keine Proguard-Datei ändern, nach der ich bereits nach 2 Tagen gesucht habe
quelle
buildTypes { release { shrinkResources true minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }
Bitte entfernen Sie den oben genannten Code in Ihrem Gradle. Das hat bei mir funktioniert. Dies ist nur für gegebenes Problem.
quelle
Ich habe die gleiche Fehlermeldung erhalten, als ich versucht habe, ein Release Build in Android nach der Installation von react-native-firebase zu erstellen .
Dies sind die Schritte, denen ich gefolgt bin,
Erstellen Sie mit diesem Befehl eine Android-App
./gradlew assembleRelease
Ich habe diese Fehlermeldung erhalten.
Dieses Problem wurde behoben, indem diese Codezeile in android / app / build.gradle geändert wurde
minifyEnabled true
dazu
Dies war die einzige Änderung, die ich vorgenommen habe. Für mich geht das.
quelle
Dieses Problem wurde aufgrund einer Warnung von Android angezeigt.
Siehe Kommentar: https://github.com/flutter/flutter/issues/40218#issuecomment-531047713
Fügen Sie /android/app/proguard-rules.pro die folgende Regel hinzu:
-dontwarn android.**
quelle
Verwenden Sie diesen Code in 'proguard-rules.pro' möglicherweise aufgelöst.
-keep class * { public private protected *; }
oder
-keep class * {*;}
Hinweis: Die obigen Befehle ignorieren Verschleierungen
kann dies stattdessen oben zum Speichern des verschleierten Zustands verwenden
-keepnames class * {*;}
Klicken Sie in Android Studio im Menü "Erstellen" auf "Projekt neu erstellen".
quelle
Ich habe seit einiger Zeit mit proguard-rules.pro zu kämpfen und bin hier keineswegs ein Profi! Ich poste meine Datei, um zu zeigen, dass Sie die Klasse * nicht ohne Parameter beibehalten sollten, da dies jede Verschleierung ausschaltet. Sie können jedoch jede Klasse, die sich von einer bestimmten Klasse erstreckt, oder jede Klasse, die eine bestimmte Schnittstelle implementiert, schützen. Sie können auch jede Klasse schützen, die einen Konstruktor mit bestimmten Elementen hat. Bitte beachten Sie, dass ich nicht jede einzelne Zeile kommentiert habe, da ich nicht 100% sicher bin, was alles funktioniert - es ist eher eine fundierte Vermutung. Mein Projekt beinhaltet ksoap2 (okhttp3, okio, XmlPull), dafür gibt es viele Regeln.
Vielleicht kann dies ein Ausgangspunkt für Sie sein - möglicherweise müssen Sie noch einige zusätzliche Regeln für Ihren Unterricht festlegen.
-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.** { *; }
quelle
hinzufügen -ignorewarnings in Ihrer proguard Datei und halten nur jene Klasse , dass Sie nicht verschleiern wollte. Einige Bibliotheken schlagen vor, einige ihrer Klassen beizubehalten, wenn Sie Proguard-Regeln verwenden. Besuchen Sie Ihre Bibliotheken für Details
quelle