Próbuję zbudować moją aplikację na Androida za pomocą Gradle w konsoli. Ale wyświetlenie poniżej błędu dotyczącego zadania ': 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
Oto wyjątek, który otrzymuję:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task
':app:transformClassesAndResourcesWithProguardForRelease'.
android
gradle
android-gradle-plugin
build.gradle
proguard
Mo. Mirmousavi
źródło
źródło
Odpowiedzi:
Spróbuj dodać ten kod do swoich reguł proGuard, u mnie zadziałał
-ignorewarnings -keep class * { public private *; }
Odpowiedź została opublikowana tutaj: Wykonanie nie powiodło się dla zadania ': app: transformClassesAndResourcesWithProguardForRelease
źródło
dodaj ten kod do
..your-project/app/proguard-rules.pro
Twój podpisany plik APK zostanie pomyślnie wygenerowany ...
źródło
release { shrinkResources true minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro', 'proguard.cfg' }
U mnie zadziałało, musiałem również dodać następujące elementy w pliku pro-gaurd.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 *; }
źródło
Nic nie zmieniłem, tylko komentarz
// shrinkResources true // minifyEnabled true
nie chcesz zmieniać żadnego pliku proguard. Szukałem już tego problemu po zmarnowaniu 2 dni
źródło
buildTypes { release { shrinkResources true minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }
Usuń powyższy kod w swoim gradle. To zadziałało dla mnie. Dotyczy to tylko danego problemu.
źródło
Otrzymałem ten sam komunikat o błędzie, gdy próbowałem zbudować wersję wydania w systemie Android po instalacji reaguj-natywny-firebase .
Oto kroki, które podążyłem
Zbuduj aplikację na Androida za pomocą tego polecenia
./gradlew assembleRelease
Otrzymałem ten komunikat o błędzie.
Rozwiązano ten problem, zmieniając tę linię kodu w android / app / build.gradle
minifyEnabled true
do tego
To była jedyna zmiana, jaką zrobiłem. Mi to pasuje.
źródło
dostałem ten problem z powodu ostrzeżenia z Androida
Zobacz komentarz: https://github.com/flutter/flutter/issues/40218#issuecomment-531047713
dodaj następującą regułę do /android/app/proguard-rules.pro:
-dontwarn android.**
źródło
Użyj tego kodu w „proguard-rules.pro” może zostać rozwiązane.
-keep class * { public private protected *; }
lub
-keep class * {*;}
uwaga: powyższe polecenia ignorują zaciemnienia
może użyć tego zamiast tego powyżej, aby zapisać stan zaciemniania
-keepnames, klasa * {*;}
W Android Studio kliknij „Przebuduj projekt” w menu „Kompiluj”.
źródło
Od dłuższego czasu zmagam się z proguard-rules.pro i nie jestem tutaj zawodowcem! Wysyłam swój plik, aby pokazać, że nie należy -przechowywać klasy * bez żadnych parametrów, ponieważ wyłącza to wszelkie zaciemnianie. Możesz jednak chronić każdą klasę, która pochodzi od określonej klasy lub dowolnej klasy implementującej określony interfejs. Możesz także zabezpieczyć każdą klasę, która ma konstruktora mającego określone elementy. Zwróć uwagę, że nie skomentowałem każdego wiersza, ponieważ nie jestem w 100% pewien, do czego wszystko służy - to raczej zgadywanie. Mój projekt zawiera ksoap2 (okhttp3, okio, XmlPull), do tego służy wiele reguł.
Może to może być dla Ciebie punkt wyjścia - nadal być może będziesz musiał wprowadzić dodatkowe zasady dla swoich zajęć.
-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.** { *; }
źródło
dodaj -ignorewarnings do swojego pliku proguard i zachowaj tylko te klasy, których nie chcesz zaciemniać. Niektóre biblioteki sugerują zachowanie niektórych swoich klas, jeśli używasz reguł proguard. Odwiedź swoje biblioteki, aby uzyskać szczegółowe informacje
źródło
dodaj tę linię do właściwości gradle
android.enableR8=true
źródło