bytedance / ByteX

ByteX is a bytecode plugin platform based on Android Gradle Transform API and ASM. 字节码插件开发平台
Apache License 2.0
3.13k stars 462 forks source link

transformClassesWithByteXForRelease失败 #73

Closed ksforme closed 3 years ago

ksforme commented 3 years ago

java.lang.RuntimeException: java.lang.RuntimeException: Failed to resolve class io/flutter/plugins/connectivity/R$styleable.class[

flutter怎么规避; 'bytex.refer_check' refer_check { whiteList = [ "io/flutter/plugin/+", ] } 好像没用

yangzhiqian commented 3 years ago

io/flutter/plugin[s]

ksforme commented 3 years ago

io/flutter/plugin[s]

还是同样的错误~,我能不去扫flutter吗

yangzhiqian commented 3 years ago

报什么错?能发一下堆栈吗?

ksforme commented 3 years ago

报什么错?能发一下堆栈吗?

java.lang.RuntimeException: R styleable class [io/flutter/plugins/connectivity/R$styleable], field [ColorStateListItem] size check error: The size we calculated is 0, but in opcode size is -1 at com.ss.android.ugc.bytex.shrinkR.visitor.AnalyzeStyleableClassVisitor.visitFieldInsn(AnalyzeStyleableClassVisitor.java:78) at org.objectweb.asm.ClassReader.readCode(ClassReader.java:2211) at org.objectweb.asm.ClassReader.readMethod(ClassReader.java:1284) at org.objectweb.asm.ClassReader.accept(ClassReader.java:688) at org.objectweb.asm.ClassReader.accept(ClassReader.java:400) at com.ss.android.ugc.bytex.common.visitor.ClassVisitorChain.accept(ClassVisitorChain.java:55) at com.ss.android.ugc.bytex.common.processor.ClassFileAnalyzer.handle(ClassFileAnalyzer.java:91) at com.ss.android.ugc.bytex.transformer.processor.ClassFileProcessor.process(ClassFileProcessor.java:27) at com.ss.android.ugc.bytex.transformer.processor.ProcessorChain.proceed(ProcessorChain.java:30) at com.ss.android.ugc.bytex.transformer.processor.FilterFileProcessor.process(FilterFileProcessor.java:23) at com.ss.android.ugc.bytex.transformer.processor.ProcessorChain.proceed(ProcessorChain.java:30) at com.ss.android.ugc.bytex.transformer.processor.task.TraverseTask.compute(TraverseTask.java:31) at java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:189) at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) at java.util.concurrent.ForkJoinTask.doJoin(ForkJoinTask.java:389) at java.util.concurrent.ForkJoinTask.invokeAll(ForkJoinTask.java:851) at com.ss.android.ugc.bytex.transformer.processor.task.FileTraverseTask.compute(FileTraverseTask.java:40) at java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:189) at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692) at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)

AnalyzeStyleableClassVisitor------visitFieldInsn------ throw new RuntimeException(String.format("R styleable class [%s], field [%s] size check error:\n " + "The size we calculated is %d, but in opcode size is %d", owner, name, styleableValList.size(), arraySize));

ksforme commented 3 years ago

报什么错?能发一下堆栈吗?

java.lang.RuntimeException: R styleable class [io/flutter/plugins/connectivity/R$styleable], field [ColorStateListItem] size check error: The size we calculated is 0, but in opcode size is -1 at com.ss.android.ugc.bytex.shrinkR.visitor.AnalyzeStyleableClassVisitor.visitFieldInsn(AnalyzeStyleableClassVisitor.java:78) at org.objectweb.asm.ClassReader.readCode(ClassReader.java:2211) at org.objectweb.asm.ClassReader.readMethod(ClassReader.java:1284) at org.objectweb.asm.ClassReader.accept(ClassReader.java:688) at org.objectweb.asm.ClassReader.accept(ClassReader.java:400) at com.ss.android.ugc.bytex.common.visitor.ClassVisitorChain.accept(ClassVisitorChain.java:55) at com.ss.android.ugc.bytex.common.processor.ClassFileAnalyzer.handle(ClassFileAnalyzer.java:91) at com.ss.android.ugc.bytex.transformer.processor.ClassFileProcessor.process(ClassFileProcessor.java:27) at com.ss.android.ugc.bytex.transformer.processor.ProcessorChain.proceed(ProcessorChain.java:30) at com.ss.android.ugc.bytex.transformer.processor.FilterFileProcessor.process(FilterFileProcessor.java:23) at com.ss.android.ugc.bytex.transformer.processor.ProcessorChain.proceed(ProcessorChain.java:30) at com.ss.android.ugc.bytex.transformer.processor.task.TraverseTask.compute(TraverseTask.java:31) at java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:189) at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) at java.util.concurrent.ForkJoinTask.doJoin(ForkJoinTask.java:389) at java.util.concurrent.ForkJoinTask.invokeAll(ForkJoinTask.java:851) at com.ss.android.ugc.bytex.transformer.processor.task.FileTraverseTask.compute(FileTraverseTask.java:40) at java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:189) at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692) at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)

AnalyzeStyleableClassVisitor------visitFieldInsn------ throw new RuntimeException(String.format("R styleable class [%s], field [%s] size check error:\n " + "The size we calculated is %d, but in opcode size is %d", owner, name, styleableValList.size(), arraySize));

我在shrink_r_class的白名单里加了 "R.styleable.*" 进行了规避 算是可以走下去了