Meituan-Dianping / Robust

Robust is an Android HotFix solution with high compatibility and high stability. Robust can fix bugs immediately without a reboot.
Apache License 2.0
4.41k stars 806 forks source link

当要修复有2个类同名或者混淆后同名,补丁制作失败 #327

Open xuminjesse opened 5 years ago

xuminjesse commented 5 years ago

问题描述:当要修复有2个类同名或者混淆后同名,补丁制作失败 (如com.test.app.a.class 和 com.test.app.b.a.class),异常如下

异常类型:java.lang.RuntimeException

Robust版本:如:0.4.87

堆栈/日志:

Caused by: java.lang.RuntimeException: com.test.app.patch.aPatchControl: frozen class (cannot edit) at javassist.ClassPool.checkNotFrozen(ClassPool.java:617) at javassist.CtClassType.setName(CtClassType.java:338) at javassist.ClassPool.getAndRename(ClassPool.java:408) at com.meituan.robust.autopatch.PatchesControlFactory.createControlClass(PatchesControlFactory.java:29) at com.meituan.robust.autopatch.PatchesControlFactory.createPatchesControl(PatchesControlFactory.java:182) at com.meituan.robust.autopatch.PatchesControlFactory$createPatchesControl.call(Unknown Source) at robust.gradle.plugin.AutoPatchTransform.createControlClass(AutoPatchTransform.groovy:271) at robust.gradle.plugin.AutoPatchTransform$createControlClass$2.callCurrent(Unknown Source) at robust.gradle.plugin.AutoPatchTransform.generatPatch(AutoPatchTransform.groovy:193) at robust.gradle.plugin.AutoPatchTransform$generatPatch$0.callCurrent(Unknown Source) at robust.gradle.plugin.AutoPatchTransform.autoPatch(AutoPatchTransform.groovy:138) at robust.gradle.plugin.AutoPatchTransform$autoPatch.callCurrent(Unknown Source) at robust.gradle.plugin.AutoPatchTransform.transform(AutoPatchTransform.groovy:97) at com.android.build.api.transform.Transform.transform(Transform.java:288) at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:221) at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:217) at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102) at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:212) at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73) at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:46) 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:121) at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOp erationExecutor.java:336) at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOp erationExecutor.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.ja va:110) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.j ava:92) ... 29 more