Error: (26, 0) Método DSL Gradle no encontrado: 'runProguard ()'

136

Estoy usando android studio 0.9.3 con gradle 'com.android.tools.build:gradle:0.14.+'

aplique el complemento: '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.+'
}

El proyecto compilado antes sin ningún cambio en ese archivo, obtengo: obtengo Error: (26, 0) No se encontró el método Gradle DSL: 'runProguard ()'

¿Cómo arreglar eso?

NickF
fuente
1
Puede leer esto como referencia: tools.android.com/tech-docs/new-build-system . Iluminará tales preguntas para usted.
IgorGanapolsky

Respuestas:

97

Por lo que sé runProguardfue reemplazado por minifyEnabled. Todavía no estoy seguro de cómo definir la configuración de proguard, pero una búsqueda en Google debería ayudarlo a descubrirlo.

Editar:

Para outFileleer aquí: https://groups.google.com/forum/#!topic/adt-dev/4_-5NvxuFB0 cómo lo hacen.

En resumen: usaron una versión más compleja:

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 + "]");
    }
}
WarrenFe
fuente
1
ahora tiene un problema con el Error: (32, 0) No se pudo encontrar la propiedad 'outputFile' en com.android.build.gradle.internal.api.ApplicationVariantImpl_Decorated@1615795.
NickF
1
Eso es correcto, lea los cambios en 0.14.0 para conocer los cambios exactos tools.android.com/tech-docs/new-build-system
Soham
Edité para reflejar el error sobre outputFile (editar revisión de pares actualmente en espera)
RoundSparrow hilltx
1
He eliminado la applicationVariants.all { variant ->línea duplicada pero acepté el resto, gracias
WarrenFaith
Tengo el mismo problema con un método diferente: no se encontró el método Gradle DSL compileSdkVersion ()
Usman
131

En lugar de usarlo runProguarden su archivo gradle, intente usarlo minifyEnabled. Esto debería solucionar el problema. runProguardestá en desuso y pronto dejará de funcionar.

EDITAR

Para usar minifyEnabled, gradle debe actualizarse a la versión 2.2 o superior.

Varundroid
fuente
El error ahora se cambió a -> "No se encontró el método Gradle DSL: 'minifyEnable ()'"
shaktiman_droid
¿tenía instalado el último sistema de construcción de gradle (2.2)?
Varundroid
Me sale el mismo error. no encontrado minifyEnable. ¿Encontraste una solución?
Henrique
@Varundroid Oh, ¿depende de 2.2? Tengo 2.1
shaktiman_droid
66
Debería ser minifyEnabled(no minifyEnable)
JRomero
112

El cambio en el archivo build.gradle de la aplicación puede ayudar:

antiguo:

buildTypes {
    release {

        runProguard false // this line has to be changed

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

nuevo:

buildTypes {
    release {

        minifyEnabled false // new version

        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
Andrey
fuente
hizo lo que sugirió, obteniendo el mismo error.
Karan Khurana
26

Si está utilizando la versión 0.14.0 o superior del gradlecomplemento, debe reemplazar " runProguard" con " minifyEnabled" en sus build.gradlearchivos.

Solo agrega esto.

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

minifyEnabled falseSignifica que los nombres de tipo de compilación no pueden ser main o androidTest (esto se aplica mediante el complemento) y que deben ser únicos entre sí.

La nueva versión del Gradlecomplemento de Android , puede eliminar automáticamente los recursos no utilizados. La gran victoria aquí es que elimina los recursos no utilizados no solo de su propio código, sino más importante de las bibliotecas que está utilizando (por ejemplo, donde hay recursos incluidos para admitir funciones que no está utilizando realmente desde su aplicación).

IntelliJ Amiya
fuente
@GeorgiAngelov Me alegro de recibir sus comentarios. Feliz codificación
IntelliJ Amiya
25

A partir de Gradle 0.14.4 , estos errores se informan como errores en tiempo de compilación.

Entonces tienes que reemplazar runProguard false/trueconminifyEnabled false/true

Los cambios se enumeran en el Blog de desarrolladores de Android .

sandalone
fuente
21

La migración de Gradle Projects a la versión 1.0.0 necesita un trabajo de cambio de nombre fácil, todo se describe aquí: http://tools.android.com/tech-docs/new-build-system/migrating-to-1-0-0

Para proguard, simplemente puede cambiar el nombre de 'runProguard' => 'minifyEnabled', para los demás ver a continuación:

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
fuente
Aprecio tanto los documentos de Android como tu resaltado, pero ¿dónde encuentras todo lo demás, desde zipAlign hacia adelante? No se menciona en qué archivos se encontrará esto. No los veo en mi archivo de configuración raíz de gradle.
user919426
3

Esto se debe a la actualización de las herramientas de Android Gradle a 0.14.3. En su archivo "build.gradle" reemplace

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

por:

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

Hasta que lo arreglen ...

Stankocken
fuente
1

runProguard ha cambiado de nombre a minifyEnabled en la versión 0.14.0 (31/10/2014) de Gradle.

Para solucionar esto, debe cambiar runProguard para minifyEnabled en el archivo build.gradle de su proyecto.

ingrese la descripción de la imagen aquí

Biswajit Karmakar
fuente