Erreur: (26, 0) Méthode Gradle DSL introuvable: 'runProguard ()'


136

J'utilise Android Studio 0.9.3 avec Gradle 'com.android.tools.build:gradle:0.14.+'

appliquer le 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.+'
}

Le projet compilé avant sans aucune modification dans ce fichier, j'obtiens : Erreur: (26, 0) Méthode Gradle DSL introuvable: 'runProguard ()'

Comment y remédier?


1
Vous pouvez le lire pour référence: tools.android.com/tech-docs/new-build-system . Cela éclairera ces questions pour vous.
IgorGanapolsky

Réponses:


97

Autant que je sache, a runProguardété remplacé par minifyEnabled. Je ne sais toujours pas comment définir la configuration de proguard, mais une recherche Google devrait vous aider à le découvrir.

Éditer:

Pour la outFilelire ici: https://groups.google.com/forum/#!topic/adt-dev/4_-5NvxuFB0 comment ils le font.

En bref: ils ont utilisé une version plus complexe:

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
Maintenant, il a un problème avec l'erreur: (32, 0) Impossible de trouver la propriété 'outputFile' sur com.android.build.gradle.internal.api.ApplicationVariantImpl_Decorated@1615795.
NickF

1
C'est correct, lisez les modifications sous 0.14.0 pour connaître les modifications exactes tools.android.com/tech-docs/new-build-system
Soham

J'ai modifié pour refléter l'erreur concernant outputFile (modifier actuellement en attente d'examen par les pairs)
RoundSparrow hilltx

1
J'ai supprimé la applicationVariants.all { variant ->ligne dupliquée mais j'ai accepté le reste, merci
WarrenFaith

J'ai le même problème avec une méthode différente: méthode Gradle DSL introuvable compileSdkVersion ()
Usman

131

Au lieu d'utiliser runProguarddans votre fichier gradle, essayez d'utiliser minifyEnabled. Cela devrait résoudre le problème. runProguardest obsolète et cessera bientôt de fonctionner.

ÉDITER

Pour l'utiliser minifyEnabled, gradle doit être mis à jour vers la version 2.2 ou supérieure.


L'erreur est maintenant remplacée par -> "Méthode Gradle DSL introuvable: 'minifyEnable ()'"
shaktiman_droid

avez-vous installé le dernier système de construction gradle (2.2)?
Varundroid

J'obtiens la même erreur. introuvable minifyEnable. Avez-vous trouvé une solution?
Henrique

@Varundroid Oh cela dépend-il de 2.2? J'ai 2.1
shaktiman_droid

6
Devrait être minifyEnabled(non minifyEnable)
JRomero

112

La modification du fichier build.gradle de l'application peut aider:

vieux:

buildTypes {
    release {

        runProguard false // this line has to be changed

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

Nouveau:

buildTypes {
    release {

        minifyEnabled false // new version

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

fait ce que vous avez suggéré toujours la même erreur.
Karan Khurana

26

Si vous utilisez la version 0.14.0 ou supérieure du gradleplugin, vous devez remplacer " runProguard" par " minifyEnabled" dans vos build.gradlefichiers.

Ajoutez simplement ceci.

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

minifyEnabled falseSignifie que les noms de type de construction ne peuvent pas être main ou androidTest (cela est imposé par le plugin) et qu'ils doivent être uniques les uns aux autres.

La nouvelle version du Gradleplugin Android , peut supprimer automatiquement les ressources inutilisées. Le grand avantage ici est qu'il supprime les ressources inutilisées non seulement de votre propre code, mais plus important encore des bibliothèques que vous utilisez (par exemple, lorsque des ressources sont incluses pour prendre en charge des fonctionnalités que vous n'utilisez pas réellement depuis votre application).


@GeorgiAngelov Heureux de recevoir vos commentaires. Happy coding
IntelliJ Amiya

25

Depuis Gradle 0.14.4 , ces erreurs sont signalées comme des erreurs de compilation.

Il faut donc remplacer runProguard false/trueparminifyEnabled false/true

Les modifications sont répertoriées sur le blog des développeurs Android .


21

La migration des projets Gradle vers la version 1.0.0 nécessite un travail de renommage facile, tout est décrit ici: http://tools.android.com/tech-docs/new-build-system/migrating-to-1-0-0

Pour proguard, vous pouvez simplement renommer 'runProguard' => 'minifyEnabled', pour les autres voir ci-dessous:

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.

J'apprécie à la fois les documents Android et vous les mettez en évidence, mais où trouvez-vous tout le reste de zipAlign à l'avenir? On oublie de mentionner dans quels fichiers cela se trouvera. Je ne les vois pas dans mon fichier de configuration de gradle racine.
user919426

3

Cela est dû à la mise à jour des outils Android Gradle vers 0.14.3. Dans votre fichier "build.gradle" remplacez

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

par:

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

Jusqu'à ce qu'ils le réparent ...


1

runProguard a été renommé minifyEnabled dans la version 0.14.0 (2014/10/31) de Gradle.

Pour résoudre ce problème, vous devez modifier runProguard en minifyEnabled dans le fichier build.gradle de votre projet.

entrez la description de l'image ici

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.