使用 kapt Android Studio 进行注释处理
Annotation processing with kapt Android Studio
我正在尝试使用 kapt 来使用我的注释处理器。但是我运行遇到了几个问题。
注释处理器 jar 是这样连接的:
kapt files('libs/processor.jar')
provided files('libs/processor.jar')
1) 我正在使用 JavaPoet 进行代码生成。并以这种方式保存我的class
JavaFile javaFile = JavaFile.builder(PACKAGE, typeSpec).build();
javaFile.writeTo(processingEnv.getFiler());
但它总是将其保存到 build\generated\source\kapt\release,并且无论构建变体如何,都不会将其保存到调试文件夹。
2) 第二个问题是生成的文件有时不会刷新,直到我按下 Build->Rebuild
kotlin-kapt
插件会根据构建的 library/application 变体自动 select 正确的输出目录。使用单个 com.android.application
模块构建项目时,Android Studio 将使用 "Build Variants" 菜单中的应用程序变体 selected。
库模块不是这样,如果没有另外配置,库模块将发布 release
构建变体 – 即使您 select "debug" 对于 select "debug" 中的那些模块=53=]菜单。
要启动 kapt
和 运行 库模块,您有三个选择:
在 "Build Variants" window 中,select "release" 用于包含您的注释代码的库模块。这将告诉 Android Studio 在 generated/sources/kapt/release/
.
中获取 kapt
输出
在您的库模块 build.gradle
中将 defaultPublishConfig
设置为 debug
(并在调试时也保留 selected 变体)。这将告诉 Android Gradle 插件编译 debug
库变体而不是默认的 release
变体。
android {
defaultPublishConfig "debug"
}
您还可以选择同时发布 debug
和 release
构建变体,方法是将 publishNonDefaults
设置为 true
。在您的主应用程序模块中,您可以两次引用库模块,用于 debugCompile
和 releaseCompile
配置。但是,请注意,这将 总是 构建这两种类型,即使您在构建时可能只需要调试源,编译时间实际上加倍。
我正在尝试使用 kapt 来使用我的注释处理器。但是我运行遇到了几个问题。
注释处理器 jar 是这样连接的:
kapt files('libs/processor.jar')
provided files('libs/processor.jar')
1) 我正在使用 JavaPoet 进行代码生成。并以这种方式保存我的class
JavaFile javaFile = JavaFile.builder(PACKAGE, typeSpec).build();
javaFile.writeTo(processingEnv.getFiler());
但它总是将其保存到 build\generated\source\kapt\release,并且无论构建变体如何,都不会将其保存到调试文件夹。
2) 第二个问题是生成的文件有时不会刷新,直到我按下 Build->Rebuild
kotlin-kapt
插件会根据构建的 library/application 变体自动 select 正确的输出目录。使用单个 com.android.application
模块构建项目时,Android Studio 将使用 "Build Variants" 菜单中的应用程序变体 selected。
库模块不是这样,如果没有另外配置,库模块将发布 release
构建变体 – 即使您 select "debug" 对于 select "debug" 中的那些模块=53=]菜单。
要启动 kapt
和 运行 库模块,您有三个选择:
在 "Build Variants" window 中,select "release" 用于包含您的注释代码的库模块。这将告诉 Android Studio 在
generated/sources/kapt/release/
. 中获取 在您的库模块
build.gradle
中将defaultPublishConfig
设置为debug
(并在调试时也保留 selected 变体)。这将告诉 Android Gradle 插件编译debug
库变体而不是默认的release
变体。android { defaultPublishConfig "debug" }
您还可以选择同时发布
debug
和release
构建变体,方法是将publishNonDefaults
设置为true
。在您的主应用程序模块中,您可以两次引用库模块,用于debugCompile
和releaseCompile
配置。但是,请注意,这将 总是 构建这两种类型,即使您在构建时可能只需要调试源,编译时间实际上加倍。
kapt
输出