Inconsistent Handling of @GlideModule Annotation Between KSP and KAPT
blipinsk opened this issue · comments
Bartek Lipinski commented
There's a difference in the way KSP handles @GlideModule
annotation in comparison to KAPT.
- KSP: the exact class which is annotated with
@GlideModule
must extendAppGlideModule
orLibraryGlideModule
- KAPT: a parent class of the one annotated with
@GlideModule
can extendAppGlideModule
orLibraryGlideModule
Glide Version: 4.16.0
Issue details / Repro steps / Use case background:
open class BaseGlideAppModule : AppGlideModule() {
override fun registerComponents(context: Context, glide: Glide, registry: Registry) {
// ... some common behavior (e.g. reused across build variants of an android app)
}
}
@GlideModule
class GlideModule : BaseGlideAppModule() {
override fun registerComponents(
context: Context,
glide: Glide,
registry: Registry,
) {
super.registerComponents(context, glide, registry)
// ... registering something
}
}
☝️ this compiles fine when using the compiler with KAPT (kapt("com.github.bumptech.glide:compiler:4.16.0")
), but fails when using KSP (ksp("com.github.bumptech.glide:ksp:4.16.0")
) with 👇
Stack trace / LogCat:
[ksp] @GlideModule annotated classes must implement AppGlideModule or LibraryGlideModule