Gradle和proguard:找不到参数的方法runProguard()[true]

Yar*_*lyk 16 android proguard gradle

我按照Proguard Gradle手册的建议配置了build.gradle

这是root build.gradle

buildscript {
    repositories {
        flatDir dirs: '/home/username/android-sdks/tools/proguard/lib'
        mavenCentral()
    }
    dependencies {                     
        classpath 'com.android.tools.build:gradle:0.5.+'
        classpath ':proguard'
    }
}
Run Code Online (Sandbox Code Playgroud)

现在这是我项目的build.gradle

apply plugin: 'android'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(':SomeLibraryProject')
}

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.0"

    sourceSets {
        ...
    }

    task runProguardTask(type: proguard.gradle.ProGuardTask) {
    }

    signingConfigs {
        debug {
            storeFile file("./keystore/keystore")
            storePassword "******"
            keyAlias "******"
            keyPassword "*******"
        }

        release {
            runProguard true
            proguardFile 'proguard-android.txt'
            storeFile file("./releasekey/keystore")
            storePassword "******"
            keyAlias "********"
            keyPassword "*******"
        }
    }

    buildTypes {
        release {
            signingConfig signingConfigs.release
        }
    }  
}
Run Code Online (Sandbox Code Playgroud)

这是输出

$ ./gradlew build

FAILURE: Build failed with an exception.

* Where:
Build file '/home/username/Documents/eclipse/workspace/repo/ProjectName/build.gradle' line: 49

* What went wrong:
A problem occurred evaluating project ':ProjectName'.
> Could not find method runProguard() for arguments [true] on SigningConfigDsl_Decorated{name=release, storeFile=null, storePassword=null, keyAlias=null, keyPassword=null, storeType=null}.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 9.14 secs
Run Code Online (Sandbox Code Playgroud)

我也想知道为什么storeFile,storePassword,keyAlias和keyPassword都是null?

Alé*_*lho 57

runProguard已被弃用(并将很快停止工作); 改为" minifyEnabled "而不是

...

buildTypes {
    release {
        minifyEnabled true
        ....
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你在Android studio 1.0 RC 1上修复了我的gradle错误 (4认同)

Ser*_*kyi 13

由于错误的DSL属性名称,这种错误很常见.:请确保您指定正确的值http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Running-ProGuardbuild.gradle:

android {
    buildTypes {
        release {
            minifyEnabled true
            proguardFile getDefaultProguardFile('proguard-android.txt')
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

你可以在这里找到所有属性的javadoc(点击下载DSL参考btn):http: //developer.android.com/tools/building/plugin-for-gradle.html


2014-11-24更新时间:

一些属性在0.14.0 gradle插件中重命名.runProguard -> minifyEnabled从Alécio检查答案,并在此按最近更改:http://tools.android.com/tech-docs/new-build-system

  • runProguard现已被弃用.看下面的正确答案,您需要更改为minifyEnabled. (4认同)