Gradle could not be created when proguard was activated

I am trying to release an Android app using Gradle.

Everything works, including the ./gradlew clean build assembleRelease .

However, as soon as I try to use proguard, Gradle will not be able to create a release version.

Here is the error I get (stack trace activated):

 ... :OSkin:validateDebugSigning :OSkin:packageDebug :OSkin:assembleDebug :OSkin:prepareReleaseDependencies :OSkin:compileReleaseAidl :OSkin:generateReleaseBuildConfig :OSkin:mergeReleaseAssets :OSkin:compileReleaseRenderscript :OSkin:mergeReleaseResources :OSkin:processReleaseManifest :OSkin:processReleaseResources :OSkin:compileRelease UP-TO-DATE :OSkin:proguardRelease ProGuard, version 4.9 Reading input... Reading program directory [/home/geantvert/workspace/OSkinProject/OSkin/build/classes/release] :OSkin:proguardRelease FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':OSkin:proguardRelease'. > Can't read [/home/geantvert/workspace/OSkinProject/OSkin/build/classes/release] (No such file or directory) * Try: Run with --info or --debug option to get more log output. * Exception is: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':OSkin:proguardRelease'. at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46) at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35) at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:62) at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58) at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:42) at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52) at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53) at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) at org.gradle.api.internal.AbstractTask.executeWithoutThrowingTaskFailure(AbstractTask.java:286) at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.executeTask(AbstractTaskPlanExecutor.java:80) at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:66) at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.executeTaskWithCacheLock(AbstractTaskPlanExecutor.java:58) at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:47) at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$1.run(DefaultTaskPlanExecutor.java:33) at org.gradle.internal.Factories$1.create(Factories.java:22) at org.gradle.cache.internal.DefaultCacheAccess.longRunningOperation(DefaultCacheAccess.java:214) at org.gradle.cache.internal.DefaultCacheAccess.longRunningOperation(DefaultCacheAccess.java:276) at org.gradle.cache.internal.DefaultPersistentDirectoryStore.longRunningOperation(DefaultPersistentDirectoryStore.java:142) at org.gradle.api.internal.changedetection.state.DefaultTaskArtifactStateCacheAccess.longRunningOperation(DefaultTaskArtifactStateCacheAccess.java:78) at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:31) at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:89) at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:29) at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61) at org.gradle.execution.DefaultBuildExecuter.access$200(DefaultBuildExecuter.java:23) at org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecuter.java:67) at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32) at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61) at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:54) at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:166) at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:113) at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:81) at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:64) 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:35) at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26) at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:50) at org.gradle.api.internal.Actions$RunnableActionAdapter.execute(Actions.java:171) at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:201) at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:174) at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:170) at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:139) 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:48) at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45) at org.gradle.launcher.Main.main(Main.java:39) at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:50) at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:32) at org.gradle.launcher.GradleMain.main(GradleMain.java:26) 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: java.io.IOException: Can't read [/home/geantvert/workspace/OSkinProject/OSkin/build/classes/release] (No such file or directory) at proguard.InputReader.readInput(InputReader.java:230) at proguard.InputReader.readInput(InputReader.java:200) at proguard.InputReader.readInput(InputReader.java:178) at proguard.InputReader.execute(InputReader.java:78) at proguard.ProGuard.readInput(ProGuard.java:197) at proguard.ProGuard.execute(ProGuard.java:79) at proguard.gradle.ProGuardTask.proguard(ProGuardTask.java:958) at org.gradle.api.internal.BeanDynamicObject$MetaClassAdapter.invokeMethod(BeanDynamicObject.java:248) at org.gradle.api.internal.BeanDynamicObject.invokeMethod(BeanDynamicObject.java:136) at org.gradle.api.internal.CompositeDynamicObject.invokeMethod(CompositeDynamicObject.java:147) at proguard.gradle.ProGuardTask_Decorated.invokeMethod(Unknown Source) at org.gradle.api.internal.BeanDynamicObject$MetaClassAdapter.invokeMethod(BeanDynamicObject.java:248) at org.gradle.api.internal.BeanDynamicObject.invokeMethod(BeanDynamicObject.java:136) at org.gradle.api.internal.CompositeDynamicObject.invokeMethod(CompositeDynamicObject.java:147) at proguard.gradle.ProGuardTask_Decorated.invokeMethod(Unknown Source) at org.gradle.util.ReflectionUtil.invoke(ReflectionUtil.groovy:23) at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:220) at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:213) at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:202) at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:530) at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:513) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61) ... 53 more Caused by: java.io.IOException: No such file or directory at proguard.io.DirectoryPump.pumpDataEntries(DirectoryPump.java:50) at proguard.InputReader.readInput(InputReader.java:226) ... 75 more BUILD FAILED Total time: 42.363 secs 

Here is my Gradle file:

 buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.5.+' } } apply plugin: 'android' repositories { mavenCentral() maven { url 'http://www.bugsense.com/gradle/' } } dependencies { compile fileTree(dir: 'libs', include: '*.jar') compile 'com.google.guava:guava:14.+' compile 'com.google.code.gson:gson:2.+' compile 'org.zeroturnaround:zt-zip:1.+' compile 'com.github.japgolly.android:svg-android:2.+' compile('de.keyboardsurfer.android.widget:crouton:1.8.1') { exclude module: 'support-v4' compile 'com.android.support:support-v4:18.+' } compile 'com.squareup:otto:1.3.4' compile 'com.squareup.okhttp:okhttp:1.2.+' compile 'com.squareup.picasso:picasso:1+' compile 'com.bugsense.trace:bugsense:3.5' //Google Drive SDK compile 'com.google.android.gms:play-services:3.+' compile 'com.google.apis:google-api-services-drive:v2+' compile('com.google.api-client:google-api-client:1.+') { exclude(group: 'xpp3', module: 'xpp3') exclude(group: 'org.apache.httpcomponents', module: 'httpclient') exclude(group: 'junit', module: 'junit') exclude(group: 'com.google.android', module: 'android') } compile('com.google.api-client:google-api-client-android:1.+') { exclude group: 'xpp3' exclude group: 'com.google.android.google-play-services' } compile('com.google.http-client:google-http-client-jackson:1.+') { exclude group: 'xpp3' } compile('com.google.http-client:google-http-client-gson:1.+') { exclude group: 'xpp3' } compile 'com.google.apis:google-api-services-plus:v1+' compile 'com.netflix.rxjava:rxjava-android:+' compile('com.github.frankiesardo:icepick:2+') { exclude module: 'support-v4' compile 'com.android.support:support-v4:18.+' } // compile (group: 'com.google.apis', name: 'google-api-services-youtube', version: 'v3-rev56-1.15.0-rc') } android { compileSdkVersion 18 buildToolsVersion "18.0.1" defaultConfig { minSdkVersion 14 targetSdkVersion 18 } signingConfigs { release { storeFile file('path_to_file') storePassword '***' keyAlias '***' keyPassword '***' } } buildTypes { release { runProguard true proguardFile getDefaultProguardFile('proguard-android.txt') proguardFile 'proguard-project.txt' signingConfig signingConfigs.release } } } 

Does anyone have an idea what the problem is?

Hello

Edit: ./gradlew clean assembleDebug works ./gradlew clean assembleDebug fine! and ./gradlew clean build assembleRelease works if runProguard is set to off. Therefore, this is a 100% proGuard problem.

+49
android gradle proguard
Aug 28 '13 at 7:28
source share
3 answers

I have been dealing with this issue for the past few hours. Basically, the proguard task stops execution if there are any warnings. You can see Proguard and stacktrace warnings by adding -d to the assembly (as in: gradle clean assembleRelease -d ). Note that stacktrace refers to "First fix the warnings above."

To just get to the point where the assembly will go through proguard, I had to add -dontwarn entries for the packages that it complained to my proguard-project.txt file. Something like:

 -dontwarn org.apache.lang.** 

... etc.

So, just put ... do as instructed by the stacktrace statement. Correct the warnings! :)

By the way, I apologize, as I now understand that the stacktrace in the original message is not exactly the same as the one I came across. However, I feel that my answer is useful, because obviously I ended up here trying to find answers to my questions.

+72
Dec 02 '13 at 22:57
source share

Hmmm, I don’t understand why, but it seems that if I start twice the same task with the same parameters (proguard ...), the second is good.

But if the second changes the parameters, the task does not work.

Hope this helps someone.

Hello

+2
Aug 28 '13 at 10:32
source share

Make sure your minifyEnabled in the gradle assembly is set to false . Because when it will be a "true" debugger when generating a signed apk, you will get an error message.

-9
Feb 14 '16 at 23:33
source share



All Articles