Error:(26, 0) Gradle DSL method not found: 'runProguard()'
I'm using android studio 0.9.3 with gradle 'com.android.tools.build:gradle:0.14.+'
apply plugin: 'com.android.application'
android {
compileSdkVersion 19
buildToolsVersion '20.0.0'
defaultConfig {
applicationId "xxx.xxx.xxx"
minSdkVersion 16
targetSdkVersion 19
versionCode 1
versionName "1.0.11"
}
signingConfigs{
releaseConfig{
storeFile file("xxxxxxx")
storePassword = "xxxx"
keyAlias = "xxxx"
keyPassword = "xxxx"
}
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.releaseConfig
// adds version to file name
applicationVariants.all { variant ->
def file = variant.outputFile
variant.outputFile = new File(file.parent, file.name.replace(".apk", "-" + defaultConfig.versionName + ".apk"))
}
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
// You must install or update the Support Repository through the SDK manager to use this dependency.
// You must install or update the Support Repository through the SDK manager to use this dependency.
// You must install or update the Google Repository through the SDK manager to use this dependency.
// You must install or update the Support Repository through the SDK manager to use this dependency.
compile 'com.android.support:support-v4:19.+'
compile 'com.android.support:appcompat-v7:19.+'
compile 'com.mcxiaoke.volley:library:1.0.6'
compile 'com.google.code.gson:gson:2.2.+'
}
The project compiled before without any changes in that file,
I'm getting:
Error:(26, 0) Gradle DSL method not found: 'runProguard()'
How to fix that?
Solution 1:
Instead of using runProguard
in your gradle file, try using minifyEnabled
. This should fix the issue. runProguard
is deprecated and soon be stop working.
EDIT
To use minifyEnabled
, gradle should be updated to version 2.2 or above.
Solution 2:
Change in the app build.gradle file may help:
old:
buildTypes {
release {
runProguard false // this line has to be changed
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
new:
buildTypes {
release {
minifyEnabled false // new version
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
Solution 3:
As far as I know runProguard
was replaced with minifyEnabled
. I am still not sure how to define the config for proguard but a Google search should help you to find out.
Edit:
For the outFile
read here: https://groups.google.com/forum/#!topic/adt-dev/4_-5NvxuFB0 how they do it.
In short: they used a more complex version:
applicationVariants.all { variant ->
variant.outputs.each { output ->
def apk = output.outputFile;
def newName;
// newName = apk.name.replace(".apk", "-v" + defaultConfig.versionName + "-" + variant.buildType.name.toUpperCase() + ".apk");
if (variant.buildType.name == "release") {
newName = apk.name.replace(".apk", "-v" + defaultConfig.versionName + "-release.apk");
} else {
newName = apk.name.replace(".apk", "-v" + defaultConfig.versionName + "-beta.apk");
}
output.outputFile = new File(apk.parentFile, newName);
if (output.zipAlign) {
output.outputFile = new File(apk.parentFile, newName.replace("-unaligned", ""));
}
logger.info('INFO: Set outputFile to ' + output.outputFile + " for [" + output.name + "]");
}
}
Solution 4:
If you are using version 0.14.0 or higher of the gradle
plugin, you should replace "runProguard
" with "minifyEnabled
" in your build.gradle
files.
Just add this.
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
minifyEnabled false
Means Build Type names cannot be main or androidTest (this is enforced by the plugin), and that they have to be unique to each other.
The new version of the Android Gradle
plugin, can automatically remove unused resources. The big win here is that it removes unused resources not just from your own code, but more importantly from libraries you are using (e.g. where there are resources included to support features that you are not actually using from your app).
Solution 5:
As of Gradle 0.14.4, these errors are reported as compile-time errors.
So you have to replace runProguard false/true
with minifyEnabled false/true
The changes are listed on Android Developers Blog.