it-roy-ru.com

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
}

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

Это исключение, которое я получаю:

org.gradle.api.tasks.TaskExecutionException: Execution failed for task
':app:transformClassesAndResourcesWithProguardForRelease'.
62
M. Mirmousavi

Попробуйте добавить этот код в ваши правила proGuard, у меня это сработало

-ignorewarnings
-keep class * {
    public private *;
}

Ответ был опубликован здесь: Не удалось выполнить задачу »: app: transformClassesAndResourcesWithProguardForRelease

95
Johnie Ndosh Spax

добавить этот код в ..your-project/app/proguard-rules.pro 

 -ignorewarnings

ваш подписанный apk будет сгенерирован успешно ...

Обновление :

Лучше исправить ваши предупреждающие сообщения, используя -dontwarn или -keep ключи на вашем proguard-rules.pro... Потому что если вы используете (возможно, ваши библиотеки) отражение Java в вашем коде приложение будет аварийно завершено ...

51
Richi

У меня это сработало, мне также пришлось добавить следующее в файл proguard.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 *;
}
6
Haris Durrani

Я ничего не изменил, просто комментарий

// shrinkResources true
// minifyEnabled true

вы не хотите изменять какой-либо файл proguard, который я уже искал для этой проблемы после 2 дней впустую 

4
Brijesh Tanwar
buildTypes {
    release {
        shrinkResources true
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-Android.txt'),
                'proguard-rules.pro'
    }
}

Пожалуйста, удалите вышеупомянутый код в вашем Gradle. Это сработало для меня . Это только для данной проблемы.

1
Ayaz Muhammad

Используйте этот код в 'proguard-rules.pro' может быть решено.

-keep class * {
public private protected *;
}

или же

-keep class * {*;}
  • примечание: вышеприведенные команды игнорируют запутывания

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

    -keepnames class * {*;}

1
Ali Bagheri

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

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

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

    ./gradlew сборка

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

FAILURE: сборка не удалась, исключение.

  • Что пошло не так: выполнение задачи не выполнено »: app: transformClassesAndResourcesWithProguardForRelease '.

    Задание не выполнено, подробности см. В журналах.

Решил эту проблему, изменив эту строку кода в Android/app/build.gradle

minifyEnabled true

к этому

minifyEnabled enableProguardInReleaseBuilds

Это было единственное изменение, которое я сделал. Меня устраивает.

0
Janaka Pushpakumara

В Android Studio нажмите «Перестроить проект» в меню «Сборка».

0
Niclin

Я боролся с 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.** { *; }

0
FrankKrumnow