使用kapt Android Studio进行注释处理

使用kapt Android Studio进行注释处理,android,android-studio,kotlin,java-annotations,kapt,Android,Android Studio,Kotlin,Java Annotations,Kapt,我正在尝试使用kapt来使用注释处理器。但是我遇到了一些问题 注释处理器jar的连接方式如下: kapt files('libs/processor.jar') provided files('libs/processor.jar') 1) 我正在使用它来生成代码。以这种方式拯救我的班级 JavaFile javaFile = JavaFile.builder(PACKAGE, typeSpec).build(); javaFile.writeTo(proces

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

注释处理器jar的连接方式如下:

    kapt files('libs/processor.jar')
    provided files('libs/processor.jar')
1) 我正在使用它来生成代码。以这种方式拯救我的班级

    JavaFile javaFile = JavaFile.builder(PACKAGE, typeSpec).build();
    javaFile.writeTo(processingEnv.getFiler());
但它总是将其保存到build\generated\source\kapt\release,并且无论构建变量如何,都不会保存到调试文件夹


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

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

对于库模块而言,情况并非如此,如果未进行其他配置,库模块将发布
版本
构建变体–即使您在“构建变体”菜单中为这些模块选择了“调试”

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

  • 在“buildvariants”窗口中,为包含注释代码的库模块选择“release”。这将告诉Android Studio拾取
    generated/sources/kapt/release/
    中的
    kapt
    输出

  • 在库模块
    build.gradle
    中,将
    defaultPublishConfig
    设置为
    debug
    (并将所选变量保持在debug状态)。这将告诉Android Gradle插件编译
    debug
    库变量,而不是默认的
    版本

    android {
        defaultPublishConfig "debug"
    }
    
  • 通过将
    publishNonDefaults
    设置为
    true
    ,您还可以选择同时发布
    debug
    release
    构建变量。在主应用程序模块中,您可以引用库模块两次,用于
    debugCompile
    releaseCompile
    配置。但是,请注意,这将始终生成这两种类型,即使您可能只需要在生成时使用调试源代码,实际上编译时间增加了一倍


  • 你找到解决办法了吗?遇到同样的问题。@david.schreiber文件夹的问题已通过仅在应用程序模块中使用处理器“解决”。文件更新的问题仍然存在。您是否正在使用kotlin 1.0.6,也许他们在kapt中修复了这些问题?我也有库模块的问题,但在分析gradle输出后,我注意到只构建了发布源。这样做的原因是,默认情况下,库模块将只发布发布版本工件:我添加了对这个问题的回答。