Erro: (26, 0) Método DSL Gradle não encontrado: 'runProguard ()'

136

Estou usando o android studio 0.9.3 com gradle 'com.android.tools.build:gradle:0.14.+'

aplique o 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.+'
}

O projeto compilado antes sem nenhuma alteração nesse arquivo, estou recebendo: Erro: (26, 0) Método DSL Gradle não encontrado: 'runProguard ()'

Como consertar isso?

NickF
fonte
1
Você pode ler isso para referência: tools.android.com/tech-docs/new-build-system . Isso iluminará essas perguntas para você.
IgorGanapolsky

Respostas:

97

Tanto quanto eu sei runProguardfoi substituído por minifyEnabled. Ainda não tenho certeza de como definir a configuração para proguard, mas uma pesquisa no Google deve ajudá-lo a descobrir.

Editar:

Para outFileler aqui: https://groups.google.com/forum/#!topic/adt-dev/4_-5NvxuFB0 como eles fazem isso.

Em resumo: eles usaram uma versão mais complexa:

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
fonte
1
agora há um problema com o erro: (32, 0) Não foi possível encontrar a propriedade 'outputFile' em com.android.build.gradle.internal.api.ApplicationVariantImpl_Decorated@1615795.
nickf
1
Isso está correto, leia as mudanças sob 0.14.0 saber as mudanças exatas tools.android.com/tech-docs/new-build-system
Soham
Eu editei para refletir o erro sobre outputFile (edit aguardando revisão por pares)
RoundSparrow hilltx
1
Eu removi a duplicação applicationVariants.all { variant ->de linha, mas aceitou o resto, graças
WarrenFaith
eu tenho mesmo problema com método diferente: método Gradle DSL não encontrado compileSdkVersion ()
Usman
131

Em vez de usar runProguardno seu arquivo gradle, tente usar minifyEnabled. Isso deve corrigir o problema. runProguardfoi descontinuado e em breve deixará de funcionar.

EDITAR

Para usar minifyEnabled, o gradle deve ser atualizado para a versão 2.2 ou superior.

Varundroid
fonte
Agora o erro foi alterado para -> "Método Gradle DSL não encontrado: 'minifyEnable ()'"
shaktiman_droid
você tinha o mais recente sistema gradle build (2.2) instalado?
Varundroid
Estou recebendo o mesmo erro. não encontrado minifyEnable. Você encontrou uma solução?
Henrique
@ Varundroid Oh depende de 2.2? Eu tenho 2.1 #
shaktiman_droid 21/11
6
Deve ser minifyEnabled(não minifyEnable)
JRomero
112

A alteração no arquivo build.gradle do aplicativo pode ajudar:

velho:

buildTypes {
    release {

        runProguard false // this line has to be changed

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

Novo:

buildTypes {
    release {

        minifyEnabled false // new version

        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
Andrey
fonte
fez o que você sugeriu ainda recebendo o mesmo erro.
Karan Khurana
26

Se você estiver usando a versão 0.14.0 ou posterior do gradleplug - in, substitua " runProguard" por " minifyEnabled" em seus build.gradlearquivos.

Apenas adicione isto.

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

minifyEnabled falseSignifica que os nomes dos tipos de compilação não podem ser main ou androidTest (isso é imposto pelo plug-in) e que eles precisam ser exclusivos um do outro.

A nova versão do Gradleplug-in Android pode remover automaticamente recursos não utilizados. A grande vitória aqui é que ele remove recursos não utilizados, não apenas do seu próprio código, mas mais importante das bibliotecas que você está usando (por exemplo, onde existem recursos incluídos para oferecer suporte a recursos que você realmente não está usando no seu aplicativo).

IntelliJ Amiya
fonte
@GeorgiAngelov Fico feliz em receber seus comentários. Feliz codificação
IntelliJ Amiya
25

No Gradle 0.14.4 , esses erros são relatados como erros em tempo de compilação.

Então você tem que substituir runProguard false/trueporminifyEnabled false/true

As alterações estão listadas no Blog dos desenvolvedores do Android .

sandalone
fonte
21

A migração de projetos Gradle para a versão 1.0.0 precisa de um trabalho fácil de renomear, tudo é descrito aqui: http://tools.android.com/tech-docs/new-build-system/migrating-to-1-0-0

Para proguard, você pode simplesmente renomear 'runProguard' => 'minifyEnabled', para os outros, veja abaixo:

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
fonte
Aprecio tanto os documentos do Android quanto os destacando, mas onde você encontra tudo o mais do zipAlign? Não se pode mencionar em quais arquivos isso será encontrado. Eu não os vejo no meu arquivo de configuração do gradle raiz.
precisa saber é o seguinte
3

Isso ocorre devido à atualização das ferramentas do Android Gradle para a 0.14.3. Em seu arquivo "build.gradle" substitua

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

de:

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

Até eles consertarem ...

stankocken
fonte
1

O runProguard foi renomeado para minifyEnabled na versão 0.14.0 (31/10/2014) do Gradle.

Para corrigir isso, você precisa alterar runProguard para minifyEnabled no arquivo build.gradle do seu projeto.

insira a descrição da imagem aqui

Biswajit Karmakar
fonte