Метод Gradle DSL не знайдено: 'runProguard'


497

Я отримую помилку після оновлення від мого останнього проекту. Не проблема в моєму коді, але у мене проблеми з build.gradle. Як я можу це виправити?

Код build.gradle тут:

apply plugin: 'android'

android {
    compileSdkVersion 21
    buildToolsVersion '20.0.0'

    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/ASL2.0'
    }

    defaultConfig {
        applicationId 'com.xxx.axxx'
        minSdkVersion 14
        targetSdkVersion 19
        versionCode 6
        versionName '1.0'
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:19.+'
    compile files('libs/commons-codec-1.8.jar')
    compile files('libs/asmack-android-8-4.0.4.jar')
    compile 'com.android.support:support-v4:21.0.0'
    compile 'com.google.code.gson:gson:2.2.4'
    compile 'com.jakewharton:butterknife:5.1.1'
}

Вихід повідомлення Gradle Sync:

Error:(27, 0) Gradle DSL method not found: 'runProguard()'
**Possible causes:
The project 'Atomic4Mobile' may be using a version of Gradle that does not contain the method.
**Gradle settings**
The build file may be missing a Gradle plugin.
**Apply Gradle plugin**

132
Спробуйте minifyEnabledзамість цього runProguard.
CommonsWare

@CommonsWare працює для мене
phmagic

Я досі не можу повірити, що це отримало так багато відгуків. Будьте в курсі змін тут: tools.android.com/tech-docs/new-build-system .
Джаред Берроуз

не працює для мене
доктор aNdRO

Відповіді:


819

введіть тут опис зображенняЯкщо ви використовуєте плагін Gradle версії 0.14.0 або вище, слід замінити "runProguard" на "minifyEnabled" у файлах build.gradle.

runProguard було перейменовано на minifyEnabled у версії 0.14.0. Докладнішу інформацію див. У розділі Система Android Build


4
Джерело для цього є тут .
Chris Cirefice

3
є два файли build.gradle, внутрішній - той, у підкаталозі програми - той.
барлоп

Помилка: (26, 0) Метод DSL Gradle не знайдено: 'classpath ()' Можливі причини: Проект 'Зразок' може використовувати версію Gradle, яка не містить методу.
Прасад

279

Використання 'minifyEnabled'замість цього 'runProguard'працює належним чином.

Previous code:

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

Current code:

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

Сподіваюсь, це допомагає.


72

Якщо ви переходите на 1.0.0, вам потрібно змінити наступні властивості.

У файлі build.gradle проекту потрібно замінити minifyEnabled.

Отже, повинен бути ваш новий тип збірки

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

Також переконайтесь, що версія gradele 1.0.0 подобається

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

у файлі build.gradle .

Це повинно вирішити проблему.

Джерело: http://tools.android.com/tech-docs/new-build-system/migrating-to-1-0-0


17

Змінюючи runProguard на minifyEnabled , частина проблеми виправляється.

Але виправлення може спричинити "Бібліотечні проекти не можуть встановити ідентифікатор програми" (виправлення для цього можна знайти тут Android Studio 1.0 та помилка "Бібліотечні проекти не можуть встановити applicationId" ).

Видаляючи ідентифікатор програми у файлі build.gradle, вам слід добре піти.


Спробуйте простежити відповідь тут, а потім дайте посилання на неї.
кодет

Хтось мав би це вже сказати. Чудово! Зробивши minifyEnabled , потрібно також зробити це в buld.gradle всіх зовнішніх бібліотечних проектів.
sud007

0

runProguard було перейменовано на minifyEnabled у версії 0.14.0 (2014/10/31) або більше у Gradle.

Щоб виправити це, вам потрібно змінити runProguard на minifyEnabled у файлі build.gradle вашого проекту.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.