从我的上一个项目更新后,我得到一个错误。在我的代码中没有问题,但我有build.gradle的问题。我该怎么解决呢?

构建。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同步消息输出:

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**

当前回答

这是针对Kotlin DSL (build.gradle.kts)的:

buildTypes {
    getByName("release") { // or simply  release {  in newer versions of Android Gradle Plugin (AGP)
      isMinifyEnabled = true
      isShrinkResources = true
      proguardFiles(
        // "proguard-android-optimize.txt" reduces size more than "proguard-android.txt"
        getDefaultProguardFile("proguard-android-optimize.txt"),
        "proguard-rules.pro"
      )
      signingConfig = signingConfigs.getByName("mySigningConfig")
    }
}

我在我的顶级构建文件中使用Android Gradle Plugin (AGP) version 7:

buildscript {
  // ...
  dependencies {
      classpath("com.android.tools.build:gradle:7.0.4")
      // ...
  }
}

其他回答

通过将runProguard更改为minifyEnabled,部分问题得到了解决。

但是修复会导致“库项目无法设置应用程序Id”(你可以在Android Studio 1.0找到这个修复,错误“库项目无法设置应用程序Id”)。

通过在构建中删除应用程序Id。Gradle文件,你应该可以开始了。

如果你使用的是0.14.0或更高版本的gradle插件,你应该在你的构建中将“runProguard”替换为“minifyEnabled”。gradle文件。

在版本0.14.0中,runProguard被重命名为minifyEnabled。有关更多信息,请参阅Android构建系统

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

要解决这个问题,您需要在构建中将runProguard更改为minifyEnabled。项目的Gradle文件。

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

在项目的构建中。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'

在构建中。gradle文件。

这应该能解决问题。

来源: http://tools.android.com/tech-docs/new-build-system/migrating-to-1-0-0

使用'minifyEnabled'而不是'runProguard'工作正常。

以前的代码:

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

当前代码:

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