TransformClassesAndResourcesWithProguardForRelease FAILED
Я пытаюсь создать приложение для 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'.
Ответы
Ответ 1
Попробуйте добавить этот код в свои правила proGuard, это сработало для меня
-ignorewarnings
-keep class * {
public private *;
}
Ответ был отправлен здесь:
Выполнение не выполнено для задачи ': app: transformClassesAndResourcesWithProguardForRelease
Ответ 2
добавьте этот код в ..your-project/app/proguard-rules.pro
-ignorewarnings
ваш подписанный apk будет сгенерирован успешно...
Обновление:
Лучше исправить ваши предупреждающие сообщения с помощью -dontwarn
или -keep
на вашем proguard-rules.pro
... Потому что, если вы используете (возможно, ваши библиотеки) java reflection в вашем коде, приложение будет разбито...
Ответ 3
Это сработало для меня, я также должен был добавить следующее в файле 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 *;
}
Ответ 4
Я ничего не изменил, просто комментарий
// shrinkResources true
// minifyEnabled true
Вы не хотите изменять какой-либо файл proguard, который я уже искал для этой проблемы после 2 дней впустую
Ответ 5
buildTypes {
release {
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
Пожалуйста, удалите вышеупомянутый код в вашем Gradle. Это сработало для меня. Это только для данной проблемы.
Ответ 6
Используйте этот код в 'proguard-rules.pro' может быть решено.
-keep class * {
public private protected *;
}
или же
-keep class * {*;}
Ответ 7
Я получил то же сообщение об ошибке, когда пытался собрать релиз сборки в Android после установки response-native-firebase.
Вот шаги, которые я выполнил,
- Сделайте все конфигурации, которые они упоминают в документации оact-native-firebase.
-
Создайте приложение для Android с помощью этой команды
./gradlew сборка
-
Получил это сообщение об ошибке.
FAILURE: сборка не удалась, исключение.
- Что пошло не так: выполнение задачи не выполнено: app: transformClassesAndResourcesWithProguardForRelease.
Задание не выполнено, подробности см. В журналах.
Решил эту проблему, изменив эту строку кода в android/app/build.gradle
minifyEnabled true
к этому
minifyEnabled enableProguardInReleaseBuilds
Это было единственное изменение, которое я сделал. Меня устраивает.
Ответ 8
В Android Studio нажмите "Перестроить проект" в меню "Сборка".
Ответ 9
Я боролся с proguard-rules.pro в течение достаточно долгого времени и ни в коем случае не профессионал здесь! Я публикую свой файл, чтобы показать, что вы не должны -keep class * без каких-либо параметров, поскольку это отключает всю запутанность. Однако вы можете защитить каждый класс, который происходит от определенного класса или любого класса, который реализует определенный интерфейс. Вы также можете защитить любой класс, имеющий конструктор, имеющий определенные элементы. Обратите внимание, что я не комментировал каждую строку, так как я не уверен на 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.** { *; }
Ответ 10
добавьте -ignorewarnings в ваш файл proguard и оставьте только тот класс, который вы не хотели запутывать. Некоторые из библиотек предлагают оставить некоторые из своих классов, если вы используете правила Proguard. Посетите ваши библиотеки для деталей
Ответ 11
В файле app/build.gradle в области buildTypes измените значение minifyEnabled
на false
,
buildTypes {
release {
shrinkResources true
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}