Open gerenvip opened 1 year ago
为了便于排查,贴上 incrementalProcessors 源码地址: https://github.com/JetBrains/kotlin/blob/master/plugins/kapt3/kapt3-base/src/org/jetbrains/kotlin/kapt3/base/incremental/incrementalProcessors.kt
override fun init(processingEnv: ProcessingEnvironment) {
if (!kind.canRunIncrementally) {
processor.init(processingEnv)
} else {
val originalFiler = processingEnv.filer
val incrementalFiler = IncrementalFiler(originalFiler)
val incProcEnvironment = IncrementalProcessingEnvironment(processingEnv, incrementalFiler)
processor.init(incProcEnvironment)
incrementalFiler.dependencyCollector = dependencyCollector.value
}
}
看情况 在 init 方法内部调用 mFiler.createResource ,这时候还在 init 的调用栈中, incrementalFiler.dependencyCollector 还未赋值,这时候使用必然 NPE,懒加载 docWriter 就能规避这个问题了,望采纳
使用 ”com.alibaba:arouter-api:1.5.2“,"com.alibaba:arouter-compiler:1.5.2" 配合 androidx 使用 "androidx.room:room-compiler:2.4.3" // or 2.4.0 RouteProcessor.init 时 NullPointerException
经测试,单独使用 room-compiler 编译OK, 单独使用 arouter 编译 NullPointerException 回退 "com.alibaba:arouter-compiler:1.2.2" 与room 搭配 编译OK 看日志像是 room 版本号升级支持了Processor的增量编译,导致RouteProcessor这边出问题 辛苦帮忙排查下原因,感谢
crash 日志如下:
Caused by: com.sun.tools.javac.processing.AnnotationProcessingError: java.lang.NullPointerException at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment$ProcessorState.(JavacProcessingEnvironment.java:712)
at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment$DiscoveredProcessors$ProcessorStateIterator.next(JavacProcessingEnvironment.java:791)
at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:886)
at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1227)
at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1340)
at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1258)
... 41 more
Caused by: java.lang.NullPointerException
at org.jetbrains.kotlin.kapt3.base.incremental.IncrementalFiler.createResource(incrementalProcessors.kt:122)
at com.alibaba.android.arouter.compiler.processor.RouteProcessor.init(RouteProcessor.java:86)
at org.jetbrains.kotlin.kapt3.base.incremental.IncrementalProcessor.init(incrementalProcessors.kt:41)
at org.jetbrains.kotlin.kapt3.base.ProcessorWrapper.init(annotationProcessing.kt:197)
at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment$ProcessorState.(JavacProcessingEnvironment.java:691)
... 46 more