【问题标题】:Gradle DSL method not found: 'runProguard'找不到 Gradle DSL 方法:'runProguard'
【发布时间】:2015-01-20 14:03:10
【问题描述】:

从上一个项目更新后出现错误。我的代码中没有问题,但我在使用 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**

【问题讨论】:

标签: android gradle android-gradle-plugin


【解决方案1】:

如果您使用的是 0.14.0 或更高版本的 gradle 插件,您应该在 build.gradle 中将 "runProguard" 替换为 "minifyEnabled"文件。

runProguard 在 0.14.0 版本中重命名为 minifyEnabled。欲了解更多信息,See Android Build System

【讨论】:

  • 来源是here
  • build.gradle文件有两个,里面的一个,app子目录下的一个。
  • Error:(26, 0) Gradle DSL method not found: 'classpath()' 可能原因:项目'Sample'可能使用了不包含该方法的Gradle版本。跨度>
【解决方案2】:

使用'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'
        }
    }

【讨论】:

    【解决方案3】:

    如果您要迁移到 1.0.0,则需要更改以下属性。

    在项目的 build.gradle 文件中你需要替换 minifyEnabled。

    因此您的新构建类型应该是

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

    还要确保 gradle 版本是 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

    【讨论】:

      【解决方案4】:

      通过将 runProguard 更改为 minifyEnabled,部分问题得到修复。

      但修复可能会导致“库项目无法设置应用程序 ID”(您可以在此处找到解决此问题的方法 Android Studio 1.0 and error "Library projects cannot set applicationId")。

      通过删除 build.gradle 文件中的应用程序 ID,您应该可以开始了。

      【讨论】:

      • 尝试在这里追踪答案,然后给出它的链接。
      • 应该已经有人告诉过了。伟大的! minifyEnabled 之后,所有外部库项目的 buld.gradle 中也需要这样做。
      【解决方案5】:

      runProguard 在 Gradle 的 0.14.0 (2014/10/31) 或更高版本中已重命名为 minifyEnabled

      要解决此问题,您需要在项目的 build.gradle 文件中将 runProguard 更改为 minifyEnabled。

      【讨论】:

        猜你喜欢
        • 2015-01-16
        • 2015-04-16
        • 2013-12-05
        • 1970-01-01
        • 2019-10-21
        • 2015-11-19
        • 2017-10-27
        • 2015-03-29
        相关资源
        最近更新 更多