Fehler: (26, 0) Gradle DSL-Methode nicht gefunden: 'runProguard ()'

136

Ich benutze Android Studio 0.9.3 mit Gradle 'com.android.tools.build:gradle:0.14.+'

Plugin anwenden: 'com.android.application'

android {
    compileSdkVersion 19
    buildToolsVersion '20.0.0'

    defaultConfig {
        applicationId "xxx.xxx.xxx"
        minSdkVersion 16
        targetSdkVersion 19
        versionCode 1
        versionName "1.0.11"
    }

    signingConfigs{
        releaseConfig{
            storeFile file("xxxxxxx")
            storePassword = "xxxx"
            keyAlias = "xxxx"
            keyPassword = "xxxx"
        }
    }

    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.releaseConfig

            // adds version to file name
            applicationVariants.all { variant ->
                def file = variant.outputFile
                variant.outputFile = new File(file.parent, file.name.replace(".apk", "-" + defaultConfig.versionName + ".apk"))
            }
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    // You must install or update the Support Repository through the SDK manager to use this dependency.
    // You must install or update the Support Repository through the SDK manager to use this dependency.
    // You must install or update the Google Repository through the SDK manager to use this dependency.
    // You must install or update the Support Repository through the SDK manager to use this dependency.
    compile 'com.android.support:support-v4:19.+'
    compile 'com.android.support:appcompat-v7:19.+'
    compile 'com.mcxiaoke.volley:library:1.0.6'
    compile 'com.google.code.gson:gson:2.2.+'
}

Das zuvor kompilierte Projekt ohne Änderungen in dieser Datei wird angezeigt : Fehler: (26, 0) Gradle-DSL-Methode nicht gefunden: 'runProguard ()'

Wie kann man das beheben?

NickF
quelle
1
Sie können dies als Referenz lesen: tools.android.com/tech-docs/new-build-system . Es wird solche Fragen für Sie beleuchten.
IgorGanapolsky

Antworten:

97

Soweit ich weiß runProguardwurde durch ersetzt minifyEnabled. Ich bin mir immer noch nicht sicher, wie ich die Konfiguration für Proguard definieren soll, aber eine Google-Suche sollte Ihnen helfen, dies herauszufinden.

Bearbeiten:

Für das outFilehier lesen: https://groups.google.com/forum/#!topic/adt-dev/4_-5NvxuFB0 wie sie es tun.

Kurz gesagt: Sie verwendeten eine komplexere Version:

applicationVariants.all { variant ->

    variant.outputs.each { output ->

        def apk = output.outputFile;
        def newName;

        // newName = apk.name.replace(".apk", "-v" + defaultConfig.versionName + "-" + variant.buildType.name.toUpperCase() + ".apk");
        if (variant.buildType.name == "release") {
            newName = apk.name.replace(".apk", "-v" + defaultConfig.versionName + "-release.apk");
        } else {
            newName = apk.name.replace(".apk", "-v" + defaultConfig.versionName + "-beta.apk");
        }

        output.outputFile = new File(apk.parentFile, newName);

        if (output.zipAlign) {
            output.outputFile = new File(apk.parentFile, newName.replace("-unaligned", ""));
        }

        logger.info('INFO: Set outputFile to ' + output.outputFile + " for [" + output.name + "]");
    }
}
WarrenFaith
quelle
1
Jetzt gibt es ein Problem mit dem Fehler: (32, 0) Die Eigenschaft 'outputFile' in com.android.build.gradle.internal.api.ApplicationVariantImpl_Decorated@1615795 konnte nicht gefunden werden.
NickF
1
Das ist richtig, lesen Sie die Änderungen unter 0.14.0, um die genauen Änderungen zu erfahren. Tools.android.com/tech-docs/new-build-system
Soham
Ich habe bearbeitet, um den Fehler über outputFile wiederzugeben (derzeit wartende Peer-Review bearbeiten)
RoundSparrow hilltx
1
Ich habe die doppelte applicationVariants.all { variant ->Zeile entfernt, aber den Rest akzeptiert, danke
WarrenFaith
Ich habe das gleiche Problem mit verschiedenen Methoden: Gradle DSL-Methode nicht gefunden compileSdkVersion ()
Usman
131

runProguardVersuchen Sie es mit anstatt in Ihrer Gradle-Datei minifyEnabled. Dies sollte das Problem beheben. runProguardist veraltet und wird bald aufhören zu arbeiten.

BEARBEITEN

Zur Verwendung minifyEnabledsollte gradle auf Version 2.2 oder höher aktualisiert werden.

Varundroid
quelle
Der Fehler wurde jetzt in -> "Gradle DSL-Methode nicht gefunden: 'minifyEnable ()'"
geändert
Hatten Sie das neueste Gradle Build System (2.2) installiert?
Varundroid
Ich erhalte den gleichen Fehler. nicht gefunden minifyEnable. Haben Sie eine Lösung gefunden?
Henrique
@ Varundroid Oh, hängt es von 2.2 ab? Ich habe 2.1
shaktiman_droid
6
Sollte minifyEnabled(nicht minifyEnable) sein
JRomero
112

Änderungen in der App build.gradle-Datei können helfen:

alt:

buildTypes {
    release {

        runProguard false // this line has to be changed

        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

Neu:

buildTypes {
    release {

        minifyEnabled false // new version

        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
Andrey
quelle
hat getan, was Sie vorgeschlagen haben, immer noch den gleichen Fehler zu bekommen.
Karan Khurana
26

Wenn Sie Version 0.14.0 oder höher des gradlePlugins verwenden, sollten Sie " runProguard" durch " minifyEnabled" in Ihren build.gradleDateien ersetzen .

Fügen Sie dies einfach hinzu.

 buildTypes {           
     release {
                    minifyEnabled false
                    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
                }
            }

minifyEnabled falseBedeutet , dass Build-Typ-Namen nicht main oder androidTest sein können (dies wird vom Plugin erzwungen) und dass sie untereinander eindeutig sein müssen.

Die neue Version des Android- GradlePlugins kann nicht verwendete Ressourcen automatisch entfernen. Der große Vorteil dabei ist, dass nicht verwendete Ressourcen nicht nur aus Ihrem eigenen Code, sondern vor allem aus den von Ihnen verwendeten Bibliotheken entfernt werden (z. B. wenn Ressourcen zur Unterstützung von Funktionen enthalten sind, die Sie nicht tatsächlich aus Ihrer App verwenden).

IntelliJ Amiya
quelle
@GeorgiAngelov Freut mich über Ihre Kommentare. Happy Coding
IntelliJ Amiya
25

Ab Gradle 0.14.4 werden diese Fehler als Kompilierungsfehler gemeldet.

Sie müssen also ersetzen runProguard false/true mitminifyEnabled false/true

Die Änderungen sind im Android Developers Blog aufgeführt .

Sandale
quelle
21

Das Migrieren von Gradle Projects auf Version 1.0.0 erfordert einige einfache Umbenennungsarbeiten. Hier wird alles beschrieben: http://tools.android.com/tech-docs/new-build-system/migrating-to-1-0-0

Für Proguard können Sie einfach 'runProguard' => 'minifyEnabled' umbenennen, für die anderen siehe unten:

Renamed Properties in BuildTypes:    
runProguard => minifyEnabled
zipAlign => zipAlignEnabled
jniDebugBuild => jniDebuggable
renderscriptDebug => renderscriptDebuggable

Renamed Properties in ProductFlavors:    
flavorGroups => flavorDimensions
packageName => applicationId
testPackageName => testApplicationId
renderscriptSupportMode => renderscriptSupportModeEnabled
ProductFlavor.renderscriptNdkMode => renderscriptNdkModeEnabled
Other Name changes

InstrumentTest was renamed to androidTest.
Madx
quelle
Ich schätze sowohl die Android-Dokumente als auch das Hervorheben, aber wo finden Sie alles andere von zipAlign, das vorwärts geht? Es wird vernachlässigt zu erwähnen, in welchen Dateien dies gefunden wird. Ich sehe sie nicht in meiner Root-Gradle-Konfigurationsdatei.
user919426
3

Dies ist auf die Aktualisierung der Gradle-Android-Tools auf 0.14.3 zurückzuführen. In Ihre Datei "build.gradle" ersetzen

classpath 'com.android.tools.build:gradle:0.14.+'

durch:

classpath 'com.android.tools.build:gradle:0.14.2'

Bis sie es reparieren ...

stankocken
quelle
1

runProguard wurde in minifyEnabled umbenannt in Version 0.14.0 (2014.10.31) von Gradle.

Um dies zu beheben, müssen Sie runProguard in der Datei build.gradle Ihres Projekts in minifyEnabled ändern .

Geben Sie hier die Bildbeschreibung ein

Biswajit Karmakar
quelle