2014-10-14 22 views
5

değerlendirirken. Aşağıdaki hatayı alıyorum. Aşağıdaki tam stacktrace'i ekleyeceğim.Proguard: IllegalArgumentException - Beklenmeyen hata ben etkinleştirilmiş ProGuard ile bir serbest bırakma apk oluşturmaya çalışıyorum talimat

Unexpected error while evaluating instruction: 
Class  = [*] 
    Method  = [myMethod(Ljava/lang/String;Ljava/util/Map;)V] 
    Instruction = [532] aload_3 v3 
    Exception = [java.lang.IllegalArgumentException] (Value is not a reference value [proguard.evaluation.value.UnknownIntegerValue]) 
    Unexpected error while performing partial evaluation: 
    Class  = [*] 
    Method  = [myMethod(Ljava/lang/String;Ljava/util/Map;)V] 
    Exception = [java.lang.IllegalArgumentException] (Value is not a reference value [proguard.evaluation.value.UnknownIntegerValue]) 
:*:proguardRelease FAILED 

Sorunu, stacktrace'de belirtilmeyen kod satırlarına daralttım.

RelativeLayout.LayoutParams relativeLayoutParams = new RelativeLayout.LayoutParams(
        ViewGroup.LayoutParams.MATCH_PARENT, 
        ViewGroup.LayoutParams.WRAP_CONTENT); 

Bunu açıklamak gerekirse, proguard sorunsuz bir şekilde bitiyor.

Şu anda proguard'ı yeni 5.0'a yükselttim ve hiç bir etkisi olmadı.

bir şey yanlış yapıyorum var mı?

İstisna tam StackTrace:

org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':*: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:64) 
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:305) 
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.executeTask(AbstractTaskPlanExecutor.java:79) 
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:63) 
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:51) 
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:23) 
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:88) 
at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:29) 
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:62) 
at org.gradle.execution.DefaultBuildExecuter.access$200(DefaultBuildExecuter.java:23) 
at org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecuter.java:68) 
at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32) 
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:62) 
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:55) 
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:149) 
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: java.lang.IllegalArgumentException: Value is not a reference value [proguard.evaluation.value.UnknownIntegerValue] 
at proguard.evaluation.value.Value.referenceValue(Value.java:97) 
at proguard.evaluation.Variables.aload(Variables.java:263) 
at proguard.evaluation.Processor.visitVariableInstruction(Processor.java:688) 
at proguard.classfile.instruction.VariableInstruction.accept(VariableInstruction.java:306) 
at proguard.optimize.evaluation.PartialEvaluator.evaluateSingleInstructionBlock(PartialEvaluator.java:753) 
at proguard.optimize.evaluation.PartialEvaluator.evaluateInstructionBlock(PartialEvaluator.java:602) 
at proguard.optimize.evaluation.PartialEvaluator.evaluateInstructionBlockAndExceptionHandlers(PartialEvaluator.java:560) 
at proguard.optimize.evaluation.PartialEvaluator.visitCodeAttribute0(PartialEvaluator.java:264) 
at proguard.optimize.evaluation.PartialEvaluator.visitCodeAttribute(PartialEvaluator.java:181) 
at proguard.optimize.info.ParameterUsageMarker.visitCodeAttribute(ParameterUsageMarker.java:176) 
at proguard.classfile.attribute.CodeAttribute.accept(CodeAttribute.java:101) 
at proguard.classfile.ProgramMethod.attributesAccept(ProgramMethod.java:79) 
at proguard.optimize.info.ParameterUsageMarker.visitProgramMethod(ParameterUsageMarker.java:136) 
at proguard.optimize.OptimizationInfoMemberFilter.visitProgramMethod(OptimizationInfoMemberFilter.java:81) 
at proguard.classfile.ProgramMethod.accept(ProgramMethod.java:71) 
at proguard.classfile.ProgramClass.methodsAccept(ProgramClass.java:504) 
at proguard.classfile.visitor.AllMethodVisitor.visitProgramClass(AllMethodVisitor.java:47) 
at proguard.classfile.ProgramClass.accept(ProgramClass.java:346) 
at proguard.classfile.ClassPool.classesAccept(ClassPool.java:124) 
at proguard.optimize.Optimizer.execute(Optimizer.java:394) 
at proguard.ProGuard.optimize(ProGuard.java:306) 
at proguard.ProGuard.execute(ProGuard.java:115) 
at proguard.gradle.ProGuardTask.proguard(ProGuardTask.java:1074) 
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:63) 
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:218) 
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:211) 
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:200) 
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:579) 
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:562) 
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80) 
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61) 
... 47 more 

cevap

13

Bu, ProGuard'ın enum türlerini en iyi duruma getirme işleminde bir hata olabilir. Bu optimizasyon devre dışı bırakarak etrafında çalışmak mümkün olabilir:

-optimizations !class/unboxing/enum 

Eğer hata raporu veya bana ayrıntıları posta yapabiliyorsa, ben içine bakacağız.

(I ProGuard Geliştiricisi olduğum)

+0

@Eric, ben (Calvin önerdiği gibi bir yöntem çıkarılan bile) ProGuard 5.2 ile bu vuruyorum. Bunun için izleyebileceğim bir hata raporu var mı? – Jayen

+0

@Eric, "-optimizations! Class/unboxing/enum" eklentisini nereye ekleyebileceğiniz hakkında daha ayrıntılı bir referans gönderebilir misiniz? –

0

Garip çözüm, ancak bunu düzeltmek için bir yol buldum. proguard soruna neden kodun gerçek bölümü için farklı bir yöntem olarak ve yöntem, adı olduğu eski konumda dışarı ayrıldı. Bu, sorunları nasıl çözdüğümden emin olmasa bile sorunları çözmüş görünüyor. Proguard böceği gibi görünüyor. Benim için çalışır, bu yüzden başkalarının da bu konuya girerse deneyebilecekleri bir şeydir.