Closed EvilsoulM closed 7 years ago
有报错的堆栈信息吗
Caused by: java.lang.IllegalStateException: can't declare fields in hook class at me.ele.lancet.weaver.internal.parser.AsmMetaParser$AsmClassParser.checkNode(AsmMetaParser.java:174) at me.ele.lancet.weaver.internal.parser.AsmMetaParser$AsmClassParser.loadClassNode(AsmMetaParser.java:163) at me.ele.lancet.weaver.internal.parser.AsmMetaParser$AsmClassParser.parse(AsmMetaParser.java:96) at me.ele.lancet.weaver.internal.parser.AsmMetaParser.lambda$parse$0(AsmMetaParser.java:69) at me.ele.lancet.weaver.internal.parser.AsmMetaParser.parse(AsmMetaParser.java:72) at me.ele.lancet.plugin.LancetTransform.transform(LancetTransform.java:120) at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:185) at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:181) at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102) at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:176) at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73) at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$IncrementalTaskAction.doExecute(DefaultTaskClassInfoStore.java:163) at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:134) at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:123) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:95) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:76) ... 20 more
我把robust关闭了 就好了~
这个是这样的,robust应该是为每个类生成了field。 因为lancet真正的hook代码是不执行在hook类里面的,所以如果hook类里面有field并且是私有或者protected,并且方法访问了它,那么真正在运行会可能导致访问权限的问题,所以lance在hook时会检查,不允许有field,有就会抛异常。
那这个问题后面你们会更新版本~来兼容吗?当然我们也可以自己来改~
你可以先试试把 apply me.ele.lancet 放在 robust的插件上面,改变一下生效顺序可能会有效。
这个问题会在下个版本修复。 也欢迎提PR。
ok 3q😄
放到前面确实好了~3qle
我们用了robust 是不是冲突了?