使用kapt Android Studio进行注释处理

我正在尝试使用kapt来使用我的注释处理器。 但是我遇到了一些问题。

注释处理器jar这样连接:

kapt files('libs/processor.jar') provided files('libs/processor.jar') 

1)我正在使用JavaPoet进行代码生成。 并以这种方式拯救我的班级

  JavaFile javaFile = JavaFile.builder(PACKAGE, typeSpec).build(); javaFile.writeTo(processingEnv.getFiler()); 

但是它总是保存它以生成\ generated \ source \ kapt \ release,并且永远不会调试文件夹而不管构建变体。

在这里输入图像描述

2)第二个问题是,生成的文件有时不刷新,直到我按生成 – >重建

kotlin-kapt插件将根据构建的库/应用程序变体自动选择正确的输出目录。 使用单个com.android.application模块构建项目时,Android Studio将使用在“构建变体”菜单中选择的应用程序变体。

建立变体窗口

对于库模块,这是不正确的,如果没有其他配置,将会发布release版本变体 – 即使在“构建变体”菜单中为这些模块选择“调试”时也是如此。

要启动并运行库模块,您有三个选项:

  1. 在“Build Variants”窗​​口中,为包含注释代码的库模块选择“release”。 这将告诉Android Studio在generated/sources/kapt/release/ kapt输出。

  2. 在你的库模块build.gradle设置defaultPublishConfigdebug (并保持选中的变体也在调试)。 这将告诉Android Gradle插件编译debug库变体,而不是默认的release

     android { defaultPublishConfig "debug" } 
  3. 通过将publishNonDefaults设置为true ,您也可以选择同时发布debug releaserelease版本变体。 在您的主应用程序模块中,您可以再次引用库模块两次,以进行debugCompilereleaseCompile配置。 但是,请注意,即使您在构建时只需要调试源,也会始终构建这两种类型,几乎是编译时间的两倍。