我正在尝试使用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)第二个问题是生成的文件有时不会刷新,直到我按下Build-> Rebuild
答案 0 :(得分:2)
kotlin-kapt
插件将根据构建的库/应用程序变体自动选择正确的输出目录。使用单个com.android.application
模块构建项目时,Android Studio将使用“Build Variants”菜单中选择的应用程序变体。
对于库模块不是这样,如果没有另外配置,它们将发布release
构建变体 - 即使在“构建变量”菜单中为这些模块选择“debug”时也是如此。
要为库模块启动kapt
并运行,您有三个选择:
在“Build Variants”窗口中,为包含带注释代码的库模块选择“release”。这将告诉Android Studio在kapt
内选择generated/sources/kapt/release/
输出。
在您的库模块build.gradle
中,将defaultPublishConfig
设置为debug
(并将所选变体保留在调试状态)。这将告诉Android Gradle插件编译debug
库变体而不是默认的release
变体。
android {
defaultPublishConfig "debug"
}
您还可以选择同时发布debug
和release
版本变体,同时将publishNonDefaults
设置为true
。在主应用程序模块中,您可以引用库模块两次,以用于debugCompile
和releaseCompile
配置。但请注意,这将始终构建两种类型,即使您在构建时可能只需要调试源,几乎是编译时间的两倍。