Gradle DSL方法不存在:'

从我的上一个项目更新后,我得到一个错误。在我的代码中没有问题,但我有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**
172138 次浏览

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

在0.14.0版本中,runProguard被重命名为minifyEnabled。更多信息,参见Android Build System

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

如果要迁移到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文件中。

这应该能解决问题。

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

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

但修复可能会导致“库项目无法设置应用程序Id”(你可以在这里找到这个修复Android Studio 1.0 and error " Library projects cannot set applicationId")。

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

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

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

enter image description here

这是针对芬兰湾的科特林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")
// ...
}
}