web-dev-qa-db-ja.com

Gradleとproguard:引数のメソッドrunProguard()が見つかりませんでした[true]

Proguard Gradleマニュアル の提案に従ってbuild.gradleを構成しました

これはルート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'
    }
}

これが私のプロジェクトの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
        }
    }  
}

そしてこれが出力です

$ ./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

また、storeFile、storePassword、keyAlias、keyPasswordがnullである理由も知りたいのですが。

16

このようなエラーは、DSLプロパティ名が間違っているためによく起こります。正しい値を指定してください: http://tools.Android.com/tech-docs/new-build-system/user-guide#TOC-Running-ProGuard at build.gradle

Android {
    buildTypes {
        release {
            minifyEnabled true
            proguardFile getDefaultProguardFile('proguard-Android.txt')
        }
    }
}

すべてのプロパティを含むjavadocはここにあります(DSLリファレンスbtnのダウンロードをクリックしてください): http://developer.Android.com/tools/building/plugin-for-gradle.html


2014-11-24からの更新:

いくつかのプロパティは0.14.0 gradleプラグインで名前が変更されました。 runProguard -> minifyEnabledAlécioからの回答を確認し、ここで最新の変更リストに従ってください: http://tools.Android.com/tech-docs/new-build-system

13

runProguardは非推奨です(すぐに機能しなくなります);代わりに "minifyEnabled"に変更します

...

buildTypes {
    release {
        minifyEnabled true
        ....
57
runProguard is deprecated after gradle build tools version 1.0.0-rc1
Running ProGuard



ProGuard is supported through the Gradle plugin for ProGuard version 4.10. The ProGuard plugin is applied automatically, and the tasks are created automatically if the Build Type is configured to run ProGuard through the minifyEnabled property.

Android {
    buildTypes {
        release {
            minifyEnabled true
            proguardFile getDefaultProguardFile('proguard-Android.txt')
        }
    }

    productFlavors {
        flavor1 {
        }
        flavor2 {
            proguardFile 'some-other-rules.txt'
        }
    }
}
3
LenaYan