glide icon indicating copy to clipboard operation
glide copied to clipboard

LibraryGlideModule can not run independently.

Open shimika opened this issue 3 years ago • 1 comments

4.12.0:

Glide, Interceptor, Compile (for annotationProcessor):

Emulator:

Issue details / Repro steps / Use case background:

I make a library use glide to show images on chat. I should to use GlideModule to add header when request image. So, I make a LibraryGlideModule and add OkhttpClient in registerComponents function. But it not called.

After add AppGlideModule in other module or library module (I test two cases each) It works and LibraryGlideModule's registerComponents function is called.

  1. In glide module developer docs, We should to use LibraryGlideModule and should not create AppGlideModule in library.
  2. LibraryGlideModule won't work without AppGlideModule.

In conclusion, We should guide to developers who use our library to add empty AppGlideModule implementation It is very annoying if someone not use image viewer.

What is good practice in this case?

Case 1. Only use LibraryGlideModule

// library module
@GlideModule
public class ChannelPluginGlideModule extends LibraryGlideModule {
  @Override
  public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) {
    // not called
  }
}

Case 2. Both AppGlideModule, LibraryGlideModule in same library module

// library module

@GlideModule
public class MyGlideModule extends AppGlideModule {
}

@GlideModule
public class ChannelPluginGlideModule extends LibraryGlideModule {
  @Override
  public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) {
    // called
  }
}

Case 3. AppGlideModule in app module, LibraryGlideModule in library module

// app module

@GlideModule
public class MyGlideModule extends AppGlideModule {
}

// library module

@GlideModule
public class ChannelPluginGlideModule extends LibraryGlideModule {
  @Override
  public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) {
    // called
  }
}

I think the important thing is the existence of AppGlideModule

After add AppGlideModule, Both Glide.with and Glideapp.with works through LibraryGlideModule.

shimika avatar Oct 05 '21 15:10 shimika

hi,have you resolved it?

justziyang avatar Mar 08 '24 06:03 justziyang