Я пытаюсь создать приложение для Android с помощью Gradle в консоли. Но ниже ошибка о задаче ': 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
}
приложение / 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
Это исключение, которое я получаю:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task
':app:transformClassesAndResourcesWithProguardForRelease'.
android
gradle
android-gradle-plugin
build.gradle
proguard
Мо Мирмусави
источник
источник
Ответы:
Попробуйте добавить этот код в свои правила proGuard, у меня это сработало
-ignorewarnings -keep class * { public private *; }
Ответ был размещен здесь: Выполнение не выполнено для задачи ': app: transformClassesAndResourcesWithProguardForRelease
источник
добавить этот код в
..your-project/app/proguard-rules.pro
ваш подписанный apk будет успешно сгенерирован ...
источник
release { shrinkResources true minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro', 'proguard.cfg' }
У меня это сработало, мне также пришлось добавить следующее в файл 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 *; }
источник
Я ничего не изменил просто комментарий
// shrinkResources true // minifyEnabled true
вы не хотите изменять какой-либо файл proguard, который я уже искал для этой проблемы после 2 дней потраченных впустую
источник
buildTypes { release { shrinkResources true minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }
Удалите вышеупомянутый код в своем градиенте. Это сработало для меня. Это только для данной проблемы.
источник
Я получил такое же сообщение об ошибке, когда пытался создать сборку релиза в Android после установки response-native-firebase .
Вот шаги, которым я следовал,
Создайте приложение для Android с помощью этой команды
./gradlew assemblyRelease
Получил это сообщение об ошибке.
Решил эту проблему, изменив эту строку кода в android / app / build.gradle
minifyEnabled true
к этому
Это было единственное изменение, которое я сделал. Меня устраивает.
источник
получил эту проблему из-за предупреждения от Android
См. комментарий: https://github.com/flutter/flutter/issues/40218#issuecomment-531047713
добавьте в /android/app/proguard-rules.pro следующее правило:
-dontwarn android.**
источник
Использование этого кода в proguard-rules.pro может быть разрешено.
-keep class * { public private protected *; }
или же
-keep class * {*;}
примечание: приведенные выше команды игнорируют обфускации
можно использовать это вместо вышеупомянутого для сохранения состояния обфускации
-keepnames класс * {*;}
В Android Studio нажмите «Rebuild Project» в меню «Build».
источник
Я довольно долго боролся с proguard-rules.pro и ни в коем случае не профессионал! Я отправляю свой файл, чтобы показать, что вам не следует сохранять класс * без каких-либо параметров, поскольку это отключает все обфускации. Однако вы можете защитить каждый класс, который является наследником определенного класса, или любого класса, реализующего определенный интерфейс. Вы также можете защитить любой класс, у которого есть конструктор с определенными элементами. Обратите внимание, что я не комментировал каждую строчку, поскольку я не уверен на 100% в том, что все делает - это больше похоже на обоснованное предположение. Мой проект включает ksoap2 (okhttp3, okio, XmlPull), для чего предназначены многие правила.
Возможно, это может стать отправной точкой для вас - вам все равно может потребоваться ввести некоторые дополнительные правила для ваших классов.
-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.** { *; }
источник
добавьте -ignorewarnings в свой файл proguard и оставьте только тот класс, который вы не хотите скрывать. Некоторые библиотеки предлагают сохранить некоторые из своих классов, если вы используете правила proguard. Посетите свои библиотеки для получения подробной информации
источник
добавить эту строку в свойства Gradle
android.enableR8=true
источник