Errore: (26, 0) Metodo DSL Gradle non trovato: 'runProguard ()'


136

Sto usando Android Studio 0.9.3 con Gradle 'com.android.tools.build:gradle:0.14.+'

applica plugin: '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.+'
}

Il progetto compilato prima senza alcuna modifica in quel file, sto ottenendo: Errore: (26, 0) Metodo DSL Gradle non trovato: 'runProguard ()'

Come risolverlo?


1
Puoi leggere questo per riferimento: tools.android.com/tech-docs/new-build-system . Illuminerà tali domande per te.
IgorGanapolsky,

Risposte:


97

Per quanto ne so è runProguardstato sostituito con minifyEnabled. Non sono ancora sicuro di come definire la configurazione di proguard, ma una ricerca su Google dovrebbe aiutarti a scoprirlo.

Modificare:

Per la outFilelettura qui: https://groups.google.com/forum/#!topic/adt-dev/4_-5NvxuFB0 come lo fanno.

In breve: hanno usato una versione più complessa:

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 + "]");
    }
}

1
ora ha un problema con l'errore: (32, 0) Impossibile trovare la proprietà 'outputFile' su com.android.build.gradle.internal.api.ApplicationVariantImpl_Decorated@1615795.
NickF

1
Esatto, leggi le modifiche sotto 0.14.0 per conoscere le modifiche esatte tools.android.com/tech-docs/new-build-system
Soham

Ho modificato per riflettere l'errore su outputFile (modifica la revisione peer attualmente in attesa)
RoundSparrow hilltx

1
Ho rimosso la applicationVariants.all { variant ->linea duplicata ma ho accettato il resto, grazie
WarrenFaith

ho lo stesso problema con un metodo diverso: metodo DSL Gradle non trovato compileSdkVersion ()
Usman

131

Invece di utilizzare runProguardnel tuo file gradle, prova a utilizzare minifyEnabled. Questo dovrebbe risolvere il problema. runProguardè obsoleto e presto smetterà di funzionare.

MODIFICARE

Per usare minifyEnabled, il gradle dovrebbe essere aggiornato alla versione 2.2 o successiva.


L'errore ora è cambiato in -> "Metodo DSL Gradle non trovato: 'minifyEnable ()'"
shaktiman_droid

hai installato l'ultimo sistema Gradle Build (2.2)?
Varundroid,

Ricevo lo stesso errore. minifyEnable non trovato. Hai trovato una soluzione?
Henrique,

@Varundroid Oh dipende da 2.2? Ho 2.1
shaktiman_droid,

6
Dovrebbe essere minifyEnabled(non minifyEnable)
JRomero il

112

La modifica del file build.gradle dell'app può aiutare:

vecchio:

buildTypes {
    release {

        runProguard false // this line has to be changed

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

nuovo:

buildTypes {
    release {

        minifyEnabled false // new version

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

ha fatto quello che hai suggerito ottenendo ancora lo stesso errore.
Karan Khurana,

26

Se si utilizza la versione 0.14.0 o successiva del gradleplug-in, è necessario sostituire " runProguard" con " minifyEnabled" nei build.gradlefile.

Basta aggiungere questo.

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

minifyEnabled falseSignifica che i nomi dei tipi di build non possono essere main o androidTest (questo è imposto dal plugin) e devono essere univoci tra loro.

La nuova versione del Gradleplug-in Android , può rimuovere automaticamente le risorse non utilizzate. La grande vittoria qui è che rimuove le risorse inutilizzate non solo dal proprio codice, ma soprattutto dalle librerie che si stanno utilizzando (ad es. Dove ci sono risorse incluse per supportare funzionalità che non si stanno effettivamente utilizzando dalla propria app).


@GeorgiAngelov Sono contento di ricevere i tuoi commenti. Buona programmazione
IntelliJ Amiya,

25

A partire dal Grado 0.14.4 , questi errori sono riportati come errori di compilazione.

Quindi devi sostituire runProguard false/trueconminifyEnabled false/true

Le modifiche sono elencate sul blog degli sviluppatori Android .


21

La migrazione dei progetti Gradle alla versione 1.0.0 richiede un semplice lavoro di ridenominazione, tutto è descritto qui: http://tools.android.com/tech-docs/new-build-system/migrating-to-1-0-0

Per proguard puoi semplicemente rinominare 'runProguard' => 'minifyEnabled', per gli altri vedi sotto:

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.

Apprezzo sia i documenti Android sia quelli che li evidenzi, ma dove trovi tutto il resto da zipAlign in avanti? C'è trascuratezza nel menzionare in quali file questo sarà trovato. Non li vedo nel mio file di configurazione gradle di root.
user919426

3

Ciò è dovuto all'aggiornamento degli strumenti Android Gradle a 0.14.3. Nel tuo file "build.gradle" sostituisci

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

di:

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

Fino a quando non lo risolvono ...


1

runProguard è stato rinominato in minifyEnabled nella versione 0.14.0 (2014/10/31) di Gradle.

Per risolvere questo problema, devi modificare runProguard in minifyEnabled nel file build.gradle del tuo progetto.

inserisci qui la descrizione dell'immagine

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.