ChatGPT解决这个技术问题 Extra ChatGPT

找不到 Gradle DSL 方法:'runProguard'

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

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**
尝试 minifyEnabled 而不是 runProguard
@CommonsWare 为我工作
我仍然无法相信这得到了这么多的支持。随时了解此处的更改:tools.android.com/tech-docs/new-build-system
不为我工作

N
Naveed Ahmad

https://i.stack.imgur.com/20vO7.png

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


其来源是 here
有两个 build.gradle 文件,里面的一个,app 子目录中的一个,就是那个。
错误:(26, 0) Gradle DSL 方法未找到:'classpath()' 可能的原因:项目 'Sample' 可能正在使用不包含该方法的 Gradle 版本。
A
Anye

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

A
Andrii Abramov

如果要迁移到 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


C
Community

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

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

通过删除 build.gradle 文件中的应用程序 ID,你应该很高兴。


尝试在这里追踪答案,然后给出它的链接。
应该已经有人告诉了。伟大的!在做完 minifyEnabled 之后,在所有外部库项目的 buld.gradle 中也需要这样做。
B
Biswajit Karmakar

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

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

https://i.stack.imgur.com/WK8QB.png


M
Mahozad

这适用于 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 插件 (AGP) 版本 7:

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