bumptech/glide · error · IllegalArgumentException
Unable to find GlideModule implementation
Error message
Unable to find GlideModule implementation
What it means
Thrown by ManifestParser.parseModule when Class.forName(className) raises ClassNotFoundException for a class name declared in AndroidManifest.xml meta-data with value 'GlideModule'. This entire GlideModule/ManifestParser mechanism is deprecated in favor of AppGlideModule/LibraryGlideModule discovered via the @GlideModule annotation and the Glide annotation processor (complier).
Source
Thrown at library/src/main/java/com/bumptech/glide/module/ManifestParser.java:81
if (Log.isLoggable(TAG, Log.DEBUG)) {
Log.d(TAG, "Finished loading Glide modules");
}
} catch (PackageManager.NameNotFoundException e) {
if (Log.isLoggable(TAG, Log.ERROR)) {
Log.e(TAG, "Failed to parse glide modules", e);
}
}
return modules;
}
@SuppressWarnings("deprecation")
private static GlideModule parseModule(String className) {
Class<?> clazz;
try {
clazz = Class.forName(className);
} catch (ClassNotFoundException e) {
throw new IllegalArgumentException("Unable to find GlideModule implementation", e);
}
Object module = null;
try {
module = clazz.getDeclaredConstructor().newInstance();
// These can't be combined until API minimum is 19.
} catch (InstantiationException e) {
throwInstantiateGlideModuleException(clazz, e);
} catch (IllegalAccessException e) {
throwInstantiateGlideModuleException(clazz, e);
} catch (NoSuchMethodException e) {
throwInstantiateGlideModuleException(clazz, e);
} catch (InvocationTargetException e) {
throwInstantiateGlideModuleException(clazz, e);
}
if (!(module instanceof GlideModule)) {
throw new RuntimeException("Expected instanceof GlideModule, but found: " + module);View on GitHub (pinned to eb14a895d8)
Solutions
- Migrate to the modern API: create a class extending AppGlideModule (and optionally LibraryGlideModule) annotated with @GlideModule, add the Glide annotation processor dependency, and remove the manifest meta-data entry
- If staying on the deprecated path, verify the fully-qualified class name in AndroidManifest.xml exactly matches the compiled class
- Add a ProGuard/R8 keep rule (-keep public class * implements com.bumptech.glide.module.GlideModule) so the class survives minification
- Ensure the library containing the module class is an actual compile dependency of the app module
Example fix
// before (AndroidManifest.xml)
<meta-data android:name="com.example.MyModule" android:value="GlideModule"/>
// after - AppGlideModule.kt
@GlideModule
class MyAppGlideModule : AppGlideModule() {
override fun registerComponents(context: Context, glide: Glide, registry: Registry) {
// custom registration
}
}
// remove the <meta-data> entry and add annotationProcessor 'com.github.bumptech.glide:compiler:VERSION' Defensive patterns
Strategy: validation
Validate before calling
// Before relying on manifest modules, verify the class is loadable on the classpath:
try {
Class.forName("com.example.MyGlideModule")
} catch (e: ClassNotFoundException) {
// fix the manifest entry or migrate to @GlideModule
} Prevention
- Migrate off manifest-based GlideModule to @GlideModule + annotation processor
- Add ProGuard keep rules for any class still referenced in AndroidManifest meta-data
- After renames, grep AndroidManifest for 'GlideModule' and update names
- Run the app right after library upgrades to catch missing-class regressions
When it happens
Trigger: An <meta-data android:name="..." android:value="GlideModule"/> entry in AndroidManifest.xml references a class that was renamed, moved, removed, kept in a library that is no longer compiled in, or whose fully-qualified name is misspelled. Also triggered by ProGuard/R8 stripping the module class at release build time.
Common situations: Upgrading a Glide 3.x app to 4.x without migrating to annotation-processor modules; release/minified builds where the module class is shrunk; refactoring that changed the package path without updating the manifest; multi-module projects where the manifest references a class from a feature module that isn't packaged.
Related errors
- Unable to instantiate GlideModule implementation for {clazz}
- Expected instanceof GlideModule, but found: {module}
- You cannot start a load on a fragment before it is attached
- sizeMultiplier must be between 0 and 1
- sizeMultiplier must be between 0 and 1
AI-assisted analysis of bumptech/glide@eb14a895d8 (2026-08-14).
Data as JSON: /api/errors/1326e0b65baa146d.
Report an issue: GitHub.