Подтвердить что ты не робот

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'.
4b9b3361

Ответ 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 * {*;}
  • примечание: вышеприведенные команды игнорируют запутывания

  • можно использовать это вместо выше для сохранения состояния запутывания

    -keepnames class * {*;}

Ответ 7

Я получил то же сообщение об ошибке, когда пытался собрать релиз сборки в Android после установки response-native-firebase.

Вот шаги, которые я выполнил,

  1. Сделайте все конфигурации, которые они упоминают в документации оact-native-firebase.
  2. Создайте приложение для Android с помощью этой команды

    ./gradlew сборка

  3. Получил это сообщение об ошибке.

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'
    }
}