使用kapt Android Studio进行注释处理

时间:2016-11-08 08:18:32

标签: android android-studio kotlin java-annotations kapt

我正在尝试使用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,并且永远不会调试文件夹而不管构建变体。

enter image description here

2)第二个问题是生成的文件有时不会刷新,直到我按下Build-> Rebuild

1 个答案:

答案 0 :(得分:2)

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

Build variants window

对于库模块不是这样,如果没有另外配置,它们将发布release构建变体 - 即使在“构建变量”菜单中为这些模块选择“debug”时也是如此。

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

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

  2. 在您的库模块build.gradle中,将defaultPublishConfig设置为debug(并将所选变体保留在调试状态)。这将告诉Android Gradle插件编译debug库变体而不是默认的release变体。

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

相关问题