Why won't Proguard work when using “minifyEnabled true”?

By : giulio
Source: Stackoverflow.com
Question!

I'm trying to run an Android build using gradle. It works fine as long as I don't minify. When I enable minify (minifyEnabled true), the build always fails because the "proxy class could not be generated for proguard.gradle.ProGuardTask".

WARNING [Project: :phone] Support for libraries with same package name is deprecated and will be removed in 1.0
running signingConfigs
running proguard

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring project ':phone'.
> Could not generate a proxy class for class proguard.gradle.ProGuardTask.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

the section of the gradle file where I use minify:

buildTypes {
        release {
            println "running proguard"
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
            signingConfig signingConfigs.release
        }
        debug {
            debuggable true
        }
    }

Just need some help knowing where to look... thanks.

Full stacktrace

* Exception is:
org.gradle.api.ProjectConfigurationException: A problem occurred configuring project ':phone'.
        at org.gradle.configuration.project.LifecycleProjectEvaluator.addConfigurationFailure(LifecycleProjectEvaluator.java:91)
        at org.gradle.configuration.project.LifecycleProjectEvaluator.notifyAfterEvaluate(LifecycleProjectEvaluator.java:86)
        at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:65)
        at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:504)
        at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:83)
        at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:47)
        at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:35)
        at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:129)
        at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:106)
        at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:86)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:80)
        at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:33)
        at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:24)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:36)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26)
        at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:51)
        at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:171)
        at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:237)
        at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:210)
        at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:35)
        at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24)
        at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:206)
        at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169)
        at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33)
        at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22)
        at org.gradle.launcher.Main.doAction(Main.java:33)
        at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
        at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:54)
        at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:35)
        at org.gradle.launcher.GradleMain.main(GradleMain.java:23)
        at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:33)
        at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:130)
        at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:48)
Caused by: org.gradle.api.GradleException: Could not generate a proxy class for class proguard.gradle.ProGuardTask.
        at org.gradle.api.internal.AbstractClassGenerator.generateUnderLock(AbstractClassGenerator.java:204)
        at org.gradle.api.internal.AbstractClassGenerator.generate(AbstractClassGenerator.java:67)
        at org.gradle.api.internal.project.taskfactory.TaskFactory.createTaskObject(TaskFactory.java:116)
        at org.gradle.api.internal.project.taskfactory.TaskFactory.createTask(TaskFactory.java:81)
        at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory.createTask(AnnotationProcessingTaskFactory.java:99)
        at org.gradle.api.internal.project.taskfactory.DependencyAutoWireTaskFactory.createTask(DependencyAutoWireTaskFactory.java:39)
        at org.gradle.api.internal.tasks.DefaultTaskContainer.create(DefaultTaskContainer.java:52)
        at org.gradle.api.internal.tasks.DefaultTaskContainer.create(DefaultTaskContainer.java:83)
        at com.android.build.gradle.BasePlugin.createProguardTasks(BasePlugin.groovy:2776)
        at com.android.build.gradle.BasePlugin$createProguardTasks$31.callCurrent(Unknown Source)
        at com.android.build.gradle.BasePlugin.createPostCompilationTasks(BasePlugin.groovy:2021)
        at com.android.build.gradle.internal.variant.ApplicationVariantFactory.createTasks(ApplicationVariantFactory.java:189)
        at com.android.build.gradle.internal.VariantManager.createTasksForVariantData(VariantManager.java:274)
        at com.android.build.gradle.internal.VariantManager.createAndroidTasks(VariantManager.java:216)
        at com.android.build.gradle.internal.VariantManager$createAndroidTasks.call(Unknown Source)
        at com.android.build.gradle.BasePlugin.createAndroidTasks(BasePlugin.groovy:463)
        at com.android.build.gradle.BasePlugin$_createTasks_closure9.doCall(BasePlugin.groovy:408)
        at org.gradle.listener.ClosureBackedMethodInvocationDispatch.dispatch(ClosureBackedMethodInvocationDispatch.java:40)
        at org.gradle.listener.ClosureBackedMethodInvocationDispatch.dispatch(ClosureBackedMethodInvocationDispatch.java:25)
        at org.gradle.listener.BroadcastDispatch.dispatch(BroadcastDispatch.java:83)
        at org.gradle.listener.BroadcastDispatch.dispatch(BroadcastDispatch.java:31)
        at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
        at com.sun.proxy.$Proxy13.afterEvaluate(Unknown Source)
        at org.gradle.configuration.project.LifecycleProjectEvaluator.notifyAfterEvaluate(LifecycleProjectEvaluator.java:79)
        ... 31 more
Caused by: java.lang.NoClassDefFoundError: proguard/ParseException
        at org.gradle.api.internal.AbstractClassGenerator.inspectType(AbstractClassGenerator.java:265)
        at org.gradle.api.internal.AbstractClassGenerator.inspectType(AbstractClassGenerator.java:220)
        at org.gradle.api.internal.AbstractClassGenerator.generateUnderLock(AbstractClassGenerator.java:98)
        ... 54 more
Caused by: java.lang.ClassNotFoundException: proguard.ParseException
        ... 57 more
By : giulio


Answers
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.

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. Reference Error:(26, 0) Gradle DSL method not found: 'runProguard()'

How Do Overcome Just remove your .gradle directory & Clean & Restart your Studio then Gradle Again.



Looks like a corrupted Gradle installation.

You can fix it by,

1) Deleting the .gradle directory

2) And then doing a clean build

Or just upgrade your Gradle installation.

Hope it helps.



This video can help you solving your question :)
By: admin