Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New code shrinker R8 fails #268

Closed
ahulyk opened this issue Jun 25, 2018 · 6 comments
Closed

New code shrinker R8 fails #268

ahulyk opened this issue Jun 25, 2018 · 6 comments

Comments

@ahulyk
Copy link

ahulyk commented Jun 25, 2018

  1. Enable new code shrinker by adding android.enableR8=true into gradle.properties
  2. Update build.gradle with:
    minifyEnabled true
    shrinkResources true
  3. Compilation going to fail:
    com.trello.lifecycle2.android.lifecycle.AndroidLifecycle.pro
# Generated keep rule for Lifecycle observer adapter.
-keep class com.trello.lifecycle2.android.lifecycle.AndroidLifecycle_LifecycleAdapter {
   ifused class com.trello.lifecycle2.android.lifecycle.AndroidLifecycle {
       <init>(...);
   };
}

:app:transformClassesAndResourcesWithR8ForRelease FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:transformClassesAndResourcesWithR8ForRelease'.
> com.android.tools.r8.CompilationFailedException: Compilation failed to complete

* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformClassesAndResourcesWithR8ForRelease'.
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:103)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:73)
	at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
	at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59)
	at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
	at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:59)
	at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:101)
	at org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute(FinalizeInputFilePropertiesTaskExecuter.java:44)
	at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:91)
	at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:62)
	at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:59)
	at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
	at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
	at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
	at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:256)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
	at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:249)
	at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:238)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:123)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:79)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:104)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:98)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:663)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:597)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:98)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
Caused by: java.lang.RuntimeException: com.android.tools.r8.CompilationFailedException: Compilation failed to complete
	at com.android.builder.profile.Recorder$Block.handleException(Recorder.java:55)
	at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:104)
	at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:230)
	at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
	at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:50)
	at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)
	at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:124)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:113)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:95)
	... 30 more
Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete
	at com.android.tools.r8.BaseCommand$Builder.build(BaseCommand.java:144)
	at com.android.builder.dexing.R8Tool.runR8(r8Tool.kt:145)
	at com.android.build.gradle.internal.transforms.R8Transform.transform(R8Transform.kt:202)
	at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:239)
	at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:235)
	at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102)
	... 42 more
Caused by: com.android.tools.r8.utils.AbortException: Error: /Users/user/Projects/test-app/app/build/intermediates/transforms/mergeJavaRes/release/0.jar:META-INF/proguard/com.trello.lifecycle2.android.lifecycle.AndroidLifecycle.pro, Error: /Users/user/Projects/test-app/app/build/intermediates/transforms/mergeJavaRes/release/0.jar:META-INF/proguard/com.trello.lifecycle2.android.lifecycle.AndroidLifecycle.pro, Offset: 158, Line: 3, column: 17, Expected char ';' at /Users/user/Projects/test-app/app/build/intermediates/transforms/mergeJavaRes/release/0.jar:META-INF/proguard/com.trello.lifecycle2.android.lifecycle.AndroidLifecycle.pro:3:17
   ifused class com.trello.lifecycle2.android.lifecycle.AndroidLifecycle {
                ^
	at com.android.tools.r8.utils.Reporter.failIfPendingErrors(Reporter.java:116)
	at com.android.tools.r8.shaking.ProguardConfiguration$Builder.buildRaw(ProguardConfiguration.java:294)
	at com.android.tools.r8.shaking.ProguardConfiguration$Builder.build(ProguardConfiguration.java:322)
	at com.android.tools.r8.R8Command$Builder.makeR8Command(R8Command.java:349)
	at com.android.tools.r8.R8Command$Builder.makeCommand(R8Command.java:276)
	at com.android.tools.r8.R8Command$Builder.makeCommand(R8Command.java:56)
	at com.android.tools.r8.BaseCommand$Builder.build(BaseCommand.java:140)
	... 47 more
	Suppressed: com.android.tools.r8.shaking.ProguardRuleParserException: Expected char ';' at /Users/user/.gradle/caches/transforms-1/files-1.1/rxlifecycle-android-lifecycle-2.2.1.aar/44d83bbc50a6437e60312ddb749e7f1a/jars/classes.jar:META-INF/proguard/com.trello.lifecycle2.android.lifecycle.AndroidLifecycle.pro:3:17
   ifused class com.trello.lifecycle2.android.lifecycle.AndroidLifecycle {
                ^
		at com.android.tools.r8.shaking.ProguardConfigurationParser$ProguardConfigurationSourceParser.parseError(ProguardConfigurationParser.java:1464)
		at com.android.tools.r8.shaking.ProguardConfigurationParser$ProguardConfigurationSourceParser.expectChar(ProguardConfigurationParser.java:1151)
		at com.android.tools.r8.shaking.ProguardConfigurationParser$ProguardConfigurationSourceParser.parseMemberPattern(ProguardConfigurationParser.java:965)
		at com.android.tools.r8.shaking.ProguardConfigurationParser$ProguardConfigurationSourceParser.parseMemberRule(ProguardConfigurationParser.java:802)
		at com.android.tools.r8.shaking.ProguardConfigurationParser$ProguardConfigurationSourceParser.parseMemberRules(ProguardConfigurationParser.java:788)
		at com.android.tools.r8.shaking.ProguardConfigurationParser$ProguardConfigurationSourceParser.parseClassSpec(ProguardConfigurationParser.java:625)
		at com.android.tools.r8.shaking.ProguardConfigurationParser$ProguardConfigurationSourceParser.parseKeepRule(ProguardConfigurationParser.java:531)
		at com.android.tools.r8.shaking.ProguardConfigurationParser$ProguardConfigurationSourceParser.parseOption(ProguardConfigurationParser.java:235)
		at com.android.tools.r8.shaking.ProguardConfigurationParser$ProguardConfigurationSourceParser.parse(ProguardConfigurationParser.java:191)
		at com.android.tools.r8.shaking.ProguardConfigurationParser.parse(ProguardConfigurationParser.java:155)
		at com.android.tools.r8.shaking.ProguardConfigurationParser.parse(ProguardConfigurationParser.java:149)
		at com.android.tools.r8.R8Command$Builder$1.visit(R8Command.java:318)
		at com.android.tools.r8.utils.ArchiveResourceProvider.accept(ArchiveResourceProvider.java:117)
		at com.android.tools.r8.R8Command$Builder.lambda$makeR8Command$6(R8Command.java:335)
		at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
		at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
		at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
		at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1376)
		at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
		at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
		at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
		at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
		at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
		at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
		at com.android.tools.r8.R8Command$Builder.makeR8Command(R8Command.java:333)
		at com.android.tools.r8.R8Command$Builder.makeCommand(R8Command.java:276)
		at com.android.tools.r8.R8Command$Builder.makeCommand(R8Command.java:56)
		at com.android.tools.r8.BaseCommand$Builder.build(BaseCommand.java:140)
		at com.android.builder.dexing.R8Tool.runR8(r8Tool.kt:145)
		at com.android.build.gradle.internal.transforms.R8Transform.transform(R8Transform.kt:202)
		at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:239)
		at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:235)
		at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102)
		at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:230)
		at sun.reflect.GeneratedMethodAccessor538.invoke(Unknown Source)
		at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
		at java.lang.reflect.Method.invoke(Method.java:498)
		at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
		at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:50)
		at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)
		at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)
		at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:124)
		at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
		at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
		at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
		at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
		at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:113)
		at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:95)
		at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:73)
		at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
		at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59)
		at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
		at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:59)
		at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:101)
		at org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute(FinalizeInputFilePropertiesTaskExecuter.java:44)
		at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:91)
		at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:62)
		at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:59)
		at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
		at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
		at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
		at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:256)
		at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
		at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
		at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
		at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
		at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:249)
		at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:238)
		at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:123)
		at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:79)
		at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:104)
		at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:98)
		at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:663)
		at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:597)
		at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:98)
		at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
		at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
		at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
		at java.lang.Thread.run(Thread.java:745)
	Suppressed: com.android.tools.r8.shaking.ProguardRuleParserException: Expected char ';' at /Users/silver/Projects/test-app/app/build/intermediates/transforms/mergeJavaRes/release/0.jar:META-INF/proguard/com.trello.lifecycle2.android.lifecycle.AndroidLifecycle.pro:3:17
   ifused class com.trello.lifecycle2.android.lifecycle.AndroidLifecycle {
                ^
		at com.android.tools.r8.shaking.ProguardConfigurationParser$ProguardConfigurationSourceParser.parseError(ProguardConfigurationParser.java:1464)
		at com.android.tools.r8.shaking.ProguardConfigurationParser$ProguardConfigurationSourceParser.expectChar(ProguardConfigurationParser.java:1151)
		at com.android.tools.r8.shaking.ProguardConfigurationParser$ProguardConfigurationSourceParser.parseMemberPattern(ProguardConfigurationParser.java:965)
		at com.android.tools.r8.shaking.ProguardConfigurationParser$ProguardConfigurationSourceParser.parseMemberRule(ProguardConfigurationParser.java:802)
		at com.android.tools.r8.shaking.ProguardConfigurationParser$ProguardConfigurationSourceParser.parseMemberRules(ProguardConfigurationParser.java:788)
		at com.android.tools.r8.shaking.ProguardConfigurationParser$ProguardConfigurationSourceParser.parseClassSpec(ProguardConfigurationParser.java:625)
		at com.android.tools.r8.shaking.ProguardConfigurationParser$ProguardConfigurationSourceParser.parseKeepRule(ProguardConfigurationParser.java:531)
		at com.android.tools.r8.shaking.ProguardConfigurationParser$ProguardConfigurationSourceParser.parseOption(ProguardConfigurationParser.java:235)
		at com.android.tools.r8.shaking.ProguardConfigurationParser$ProguardConfigurationSourceParser.parse(ProguardConfigurationParser.java:191)
		at com.android.tools.r8.shaking.ProguardConfigurationParser.parse(ProguardConfigurationParser.java:155)
		at com.android.tools.r8.shaking.ProguardConfigurationParser.parse(ProguardConfigurationParser.java:149)
		at com.android.tools.r8.R8Command$Builder$1.visit(R8Command.java:318)
		at com.android.tools.r8.utils.ArchiveResourceProvider.accept(ArchiveResourceProvider.java:117)
		at com.android.tools.r8.R8Command$Builder.lambda$makeR8Command$6(R8Command.java:335)
		at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
		at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
		at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
		at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1376)
		at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
		at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
		at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
		at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
		at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
		at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
		at com.android.tools.r8.R8Command$Builder.makeR8Command(R8Command.java:333)
		at com.android.tools.r8.R8Command$Builder.makeCommand(R8Command.java:276)
		at com.android.tools.r8.R8Command$Builder.makeCommand(R8Command.java:56)
		at com.android.tools.r8.BaseCommand$Builder.build(BaseCommand.java:140)
		at com.android.builder.dexing.R8Tool.runR8(r8Tool.kt:145)
		at com.android.build.gradle.internal.transforms.R8Transform.transform(R8Transform.kt:202)
		at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:239)
		at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:235)
		at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102)
		at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:230)
		at sun.reflect.GeneratedMethodAccessor538.invoke(Unknown Source)
		at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
		at java.lang.reflect.Method.invoke(Method.java:498)
		at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
		at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:50)
		at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)
		at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)
		at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:124)
		at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
		at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
		at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
		at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
		at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:113)
		at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:95)
		at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:73)
		at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
		at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59)
		at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
		at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:59)
		at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:101)
		at org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute(FinalizeInputFilePropertiesTaskExecuter.java:44)
		at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:91)
		at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:62)
		at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:59)
		at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
		at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
		at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
		at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:256)
		at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
		at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
		at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
		at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
		at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:249)
		at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:238)
		at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:123)
		at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:79)
		at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:104)
		at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:98)
		at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:663)
		at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:597)
		at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:98)
		at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
		at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
		at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
		at java.lang.Thread.run(Thread.java:745)
@dlew
Copy link
Contributor

dlew commented Jun 25, 2018

Have you filed this Google/R8? It seems like it's more in their wheelhouse than mine.

@ahulyk
Copy link
Author

ahulyk commented Jun 25, 2018

@dlew yeap, i've also shared that with Google

@dlew
Copy link
Contributor

dlew commented Jun 25, 2018

Could you link the Google ticket here?

@ahulyk
Copy link
Author

ahulyk commented Jun 25, 2018

@dlew linked issue

@ahulyk
Copy link
Author

ahulyk commented Jul 25, 2018

@dlew please check answer from Google side:

I was digging into a different issue this morning and happened to figure out what's happening here. The RxLifecycle library was compiled with Android lifecycle version 1.0.0, which embedded keep rules with the internal "ifused" syntax into consumer jars. So the current version of RxLifecycle on maven will have this "ifused" rule for eternity. This wasn't really an issue until R8 released the feature to consume rules embedded in jars.

I don't think we want to support the internal "ifused" syntax, so I would advise using a newer release of Android lifecycle which correctly produces "-if" syntax (I've verified that version 1.1.1 does this) and publish a new version of the RxLifecycle library.

Looks like updating Android Lifecycle will solve the issue.

ahulyk added a commit to ahulyk/RxLifecycle that referenced this issue Jul 25, 2018
Resource shrinker generates Proguard rule with old, internal syntax: `ifused`
@dlew
Copy link
Contributor

dlew commented Jul 29, 2018

Should be fixed via #275.

@dlew dlew closed this as completed Jul 29, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants