transformClassesAndResourcesWithProguardForRelease FAILED

M. *_*avi 80 android proguard gradle build.gradle android-gradle-plugin

我正在尝试使用Gradle在控制台中构建我的Android应用程序.但是得到关于任务的错误: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
}
Run Code Online (Sandbox Code Playgroud)

应用程序/的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'
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

./gradlew build --stacktrace

这是我收到的例外情况:

org.gradle.api.tasks.TaskExecutionException: Execution failed for task
':app:transformClassesAndResourcesWithProguardForRelease'.
Run Code Online (Sandbox Code Playgroud)

Joh*_*pax 113

尝试将此代码添加到您的proGuard规则中,它对我有用

-ignorewarnings
-keep class * {
    public private *;
}
Run Code Online (Sandbox Code Playgroud)

答案发布在这里: 任务'执行失败':app:transformClassesAndResourcesWithProguardForRelease

  • 警告:如果您希望保密代码,请不要使用此答案. (24认同)
  • 但这是没用的,因为-keep class*{public private*; 将使你的所有课程免于混淆,因此这里没有任何用处. (19认同)
  • 即使这似乎有效,但最好还是有一个解释. (11认同)
  • -ignorewarnings对我来说是一个正确的提示 (3认同)
  • 上面你的代码用于我的apk反编译后显示原始类和代码不安全我的apk ??? (2认同)

Ric*_*chi 64

将此代码添加到 ..your-project/app/proguard-rules.pro

 -ignorewarnings
Run Code Online (Sandbox Code Playgroud)

你的签名apk将成功生成...

更新:

这是更好地使用你的警告信息来修复-dontwarn-keep 上的按键你proguard-rules.pro......因为如果你使用(也许你的库)Java反射在你的代码的应用程序将崩溃......


小智 9

它对我有用我还必须在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 *;
}
Run Code Online (Sandbox Code Playgroud)

  • 警告:如果您想保密您的密码,请不要使用此答案 (8认同)

Bri*_*war 5

我什么都没改变只是评论

// shrinkResources true
// minifyEnabled true
Run Code Online (Sandbox Code Playgroud)

您不想更改浪费了2天后我已经搜索过的所有proguard文件

  • minifyEnabled为您的代码启动某种加密。如果您不做这些事情,骇客的工作将会更轻松。在production-apk文件上禁用它很有风险! (4认同)