4

我正在尝试使用 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());

但它总是将其保存到 build\generated\source\kapt\release,并且无论构建变体如何,都永远不会调试文件夹。

在此处输入图像描述

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

4

1 回答 1

2

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

构建变体窗口

这不适用于库模块,如果未进行其他配置,它将发布release构建变体——即使您在“构建变体”菜单中为这些模块选择“调试”也是如此。

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

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

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

    android {
        defaultPublishConfig "debug"
    }
    
  3. 您还可以选择同时发布antdebug和build 变体,方法是设置为. 在您的主应用程序模块中,您可以引用库模块两次,用于和配置。但是,请注意,这将始终构建两种类型,即使您在构建时可能只需要调试源,实际上会使编译时间加倍。releasepublishNonDefaultstruedebugCompilereleaseCompile

于 2017-01-10T13:42:42.483 回答