Ошибка: (26, 0) Gradle DSL-метод не найден: 'runProguard ()'


136

Я использую Android Studio 0.9.3 с Gradle 'com.android.tools.build:gradle:0.14.+'

применить плагин: '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.+'
}

Проект, скомпилированный ранее без каких-либо изменений в этом файле, я получаю: Ошибка: (26, 0) Метод Gradle DSL не найден: 'runProguard ()'

Как это исправить?


1
Вы можете прочитать это для справки: tools.android.com/tech-docs/new-build-system . Это осветит вам такие вопросы.
Игорь Ганапольский 08

Ответы:


97

Насколько я знаю runProguardбыл заменен на minifyEnabled. Я все еще не уверен, как определить конфигурацию для proguard, но поиск в Google должен помочь вам узнать.

Редактировать:

Для outFileчтения здесь: https://groups.google.com/forum/#!topic/adt-dev/4_-5NvxuFB0 , как они это делают.

Короче: использовали более сложную версию:

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
теперь у него проблема с ошибкой: (32, 0) Не удалось найти свойство outputFile на com.android.build.gradle.internal.api.ApplicationVariantImpl_Decorated@1615795.
NickF

1
Это правильно, прочитайте изменения под 0.14.0 , чтобы знать точные изменения tools.android.com/tech-docs/new-build-system
хам

Я отредактировал, чтобы отразить ошибку о outputFile (отредактируйте, в настоящее время ожидая экспертной оценки)
RoundSparrow hilltx

1
Я удалил повторяющуюся applicationVariants.all { variant ->строку, но принял остальное, спасибо
WarrenFaith 08

У меня такая же проблема с другим методом: метод Gradle DSL не найден compileSdkVersion ()
Усман

131

Вместо использования runProguardв вашем файле gradle попробуйте использовать minifyEnabled. Это должно решить проблему. runProguardустарел и скоро перестанет работать.

РЕДАКТИРОВАТЬ

Для использования minifyEnabledgradle необходимо обновить до версии 2.2 или выше.


Ошибка теперь изменена на -> «Метод Gradle DSL не найден: 'minifyEnable ()'»
shaktiman_droid

у вас была установлена ​​последняя система сборки gradle (2.2)?
Варундроид

У меня такая же ошибка. не найден minifyEnable. Вы нашли решение?
Henrique

@Varundroid Ой это от 2.2 зависит? У меня 2.1
shaktiman_droid

6
Должно быть minifyEnabled(не minifyEnable)
JRomero

112

Может помочь изменение в файле приложения build.gradle:

старый:

buildTypes {
    release {

        runProguard false // this line has to be changed

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

новый:

buildTypes {
    release {

        minifyEnabled false // new version

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

сделал то, что вы предложили, по-прежнему получаю ту же ошибку.
Каран Хурана,

26

Если вы используете плагин версии 0.14.0 или выше gradle, вам следует заменить " runProguard" на " minifyEnabled" в своемbuild.gradle файлах.

Просто добавь это.

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

minifyEnabled falseОзначает, что имена типов сборки не могут быть main или androidTest (это обеспечивается плагином), и что они должны быть уникальными друг для друга.

Новая версия Gradleплагина Android может автоматически удалять неиспользуемые ресурсы. Большим преимуществом здесь является то, что он удаляет неиспользуемые ресурсы не только из вашего собственного кода, но, что более важно, из библиотек, которые вы используете (например, там, где есть ресурсы, включенные для поддержки функций, которые вы фактически не используете в своем приложении).


@GeorgiAngelov Рад получить ваши комментарии. Удачного кодирования
IntelliJ Amiya


21

Для миграции Gradle Projects в версию 1.0.0 требуется легкое переименование, все описано здесь: http://tools.android.com/tech-docs/new-build-system/migrating-to-1-0-0

Для proguard вы можете просто переименовать 'runProguard' => 'minifyEnabled', остальные см. Ниже:

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.

Я ценю как документы для Android, так и то, что вы их выделяете, но где вы найдете все остальное от zipAlign в будущем? Не упоминается, в каких файлах это будет найдено. Я не вижу их в моем корневом конфигурационном файле gradle.
user919426

3

Это связано с обновлением инструментов Gradle Android до версии 0.14.3. В свой файл "build.gradle" замените

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

от:

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

Пока они не исправят ...


1

runProguard был переименован в minifyEnabled в версии 0.14.0 (2014/10/31) Gradle.

Чтобы исправить это, вам нужно изменить runProguard на minifyEnabled в файле build.gradle вашего проекта.

введите описание изображения здесь

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.