bumptech / glide

An image loading and caching library for Android focused on smooth scrolling
https://bumptech.github.io/glide/
Other
34.66k stars 6.12k forks source link

Inconsistent Handling of @GlideModule Annotation Between KSP and KAPT #5411

Open blipinsk opened 5 months ago

blipinsk commented 5 months ago

There's a difference in the way KSP handles @GlideModule annotation in comparison to KAPT.

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
yoobi commented 2 months ago

I noticed the same behavior in my app, so I'm forced to use kapt for glide but the rest of my app is using ksp :/