MegatronKing / StringFog

一款自动对字节码中的字符串进行加密Android插件工具
Apache License 2.0
1.67k stars 334 forks source link

JDK11 ArrayIndexOutOfBoundsException #142

Open Bewitching-coder opened 1 year ago

Bewitching-coder commented 1 year ago

Caused by: java.lang.ArrayIndexOutOfBoundsException at org.objectweb.asm.ClassReader.createDebugLabel(ClassReader.java:2709) at org.objectweb.asm.ClassReader.readCode(ClassReader.java:1903) at org.objectweb.asm.ClassReader.readMethod(ClassReader.java:1514) at org.objectweb.asm.ClassReader.accept(ClassReader.java:744) at org.objectweb.asm.ClassReader.accept(ClassReader.java:424) at com.github.megatronking.stringfog.plugin.StringFogClassInjector.processClass(StringFogClassInjector.java:120) at com.github.megatronking.stringfog.plugin.StringFogClassInjector.doFog2Jar(StringFogClassInjector.java:92) at com.github.megatronking.stringfog.plugin.StringFogClassInjector$doFog2Jar$0.call(Unknown Source) at com.github.megatronking.stringfog.plugin.StringFogTransform$_transform_closure5.doCall(StringFogTransform.groovy:214) at jdk.internal.reflect.GeneratedMethodAccessor691.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at com.github.megatronking.stringfog.plugin.StringFogTransform.transform(StringFogTransform.groovy:197) at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:284) at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:247) at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:106) at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:242) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:104) at org.gradle.api.internal.project.taskfactory.IncrementalTaskInputsTaskAction.doExecute(IncrementalTaskInputsTaskAction.java:47) at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51) at org.gradle.api.internal.project.taskfactory.AbstractIncrementalTaskAction.execute(AbstractIncrementalTaskAction.java:25) at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$2.run(ExecuteActionsTaskExecuter.java:494) at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29) at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26) at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75) at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68) at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56) at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:71) at org.gradle.internal.operations.DefaultBuildOperationExecutor$$Lambda$148/0x0000000000000000.accept(Unknown Source) at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45) at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:71) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:479) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:462) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$400(ExecuteActionsTaskExecuter.java:105) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.executeWithPreviousOutputFiles(ExecuteActionsTaskExecuter.java:273) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:251) at org.gradle.internal.execution.steps.ExecuteStep.lambda$executeOperation$0(ExecuteStep.java:65)

Bewitching-coder commented 1 year ago

Stringfog版本: 2.2.1

Bewitching-coder commented 1 year ago

kotlin内联函数中,字符为返回值的高阶函数作为参数时,出现上述问题

Bewitching-coder commented 1 year ago

写法如下: inline fun logE(tag: ()->String = { "ABC" }, str: () -> String) { if (BuildConfig.QA_BUILD) Log.e(tag(), str.invoke()) }