alibaba / ARouter

💪 A framework for assisting in the renovation of Android componentization (帮助 Android App 进行组件化改造的路由框架)
Apache License 2.0
14.42k stars 2.59k forks source link

[issues-1035] fix kotlion incrementalFilter createResource NPE #1037

Open gerenvip opened 1 year ago

gerenvip commented 1 year ago

功能:修复 启用 doc 的场景下, RouteProcessor 基于 kotlion 增量编译Filter时 创建 docWriter 触发JavaNullPointerException

Issues[1035]: https://github.com/alibaba/ARouter/issues/1035

crash 原因: 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 } }

执行 processor.init(incProcEnvironment) 时 还没有给 dependencyCollector 赋值,RouteProcessor#init 时 mFiler.createResource 会调用 dependencyCollector 导致 空指针

解决方案:

  1. 不启用 generateDoc
  2. 延迟初始化 docWriter
CLAassistant commented 1 year ago

CLA assistant check
All committers have signed the CLA.