返回

Gradle DSL 方法“runProguard”找不到?解决指南

Android

Gradle DSL 方法“runProguard”找不到?终极指南

作为一名经验丰富的程序员,在更新项目时遇到了一个常见的 Gradle 构建错误:“Gradle DSL 方法未找到:'runProguard'”。这个错误让我感到困惑,迫使我深入了解 Gradle 版本兼容性和构建脚本配置。经过一番深入调查和实践,我总结出了一个全面的指南,帮助你理解并解决这个问题,让你的项目顺利进行。

问题分析

当 Gradle 升级到较新版本时,某些过时的 DSL 方法可能会被弃用或重命名。在你的案例中,“runProguard”方法已被弃用,需要用替代方法“minifyEnabled”来代替。

解决方案

要解决这个错误,你需要采取以下步骤:

  1. 检查 Gradle 版本: 确保你的项目使用的是包含“runProguard”方法的 Gradle 版本。

  2. 应用 Gradle 插件: 确认 build.gradle 文件中包含了必要的 Gradle 插件:

    apply plugin: 'com.android.application'
    
  3. 调整构建脚本: 将“runProguard”属性更改为“minifyEnabled”,如下所示:

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    
  4. 同步 Gradle: 再次执行 Gradle 同步以应用更改。

示例代码

下面的 build.gradle 文件展示了如何正确配置“minifyEnabled”和 Proguard 规则:

apply plugin: 'com.android.application'

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 {
            minifyEnabled 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 DSL 方法“runProguard”找不到的错误需要对 Gradle 版本兼容性和构建脚本配置进行深入理解。通过遵循本指南中的步骤,你可以轻松地调整项目配置并恢复无错误的构建过程。

常见问题解答

  1. 为什么“runProguard”方法被弃用了?

    为了简化 Gradle 构建脚本并使其更具一致性,过时的 DSL 方法被弃用。

  2. “minifyEnabled”属性有什么作用?

    “minifyEnabled”属性控制代码缩小和混淆,与弃用的“runProguard”方法具有相同的功能。

  3. 如何在 Proguard 规则中指定自定义规则?

    要指定自定义 Proguard 规则,请在 build.gradle 文件中创建一个名为“proguard-rules.pro”的文件,并在其中添加你的规则。

  4. 如何排除特定类或包?

    要排除特定类或包,请在“proguard-rules.pro”文件中使用“-keep”或“-keepclasseswithmembers”规则。

  5. 如何查看 Proguard 生成的报告?

    要查看 Proguard 生成的报告,请在终端中运行“gradlew proguardReport”命令。