microg/GmsCore · error · DynamiteModule.LoadingException
Failed to load remote module.
Error message
Failed to load remote module.
What it means
Wrapping failure in DynamiteModule.load: any unexpected Throwable (other than LoadingException) escaping the version-policy selection or module load is rethrown as a LoadingException with this message and the original cause attached. It means the remote Dynamite module could not be loaded for a platform-level reason.
Source
Thrown at play-services-basement/src/main/java/com/google/android/gms/dynamite/DynamiteModule.java:151
if (applicationContext == null) throw new LoadingException("null application Context", null);
try {
VersionPolicy.SelectionResult result = policy.selectModule(context, moduleId, VersionPolicy.IVersions.Default);
Log.i(TAG, "Considering local module " + moduleId + ":" + result.localVersion + " and remote module " + moduleId + ":" + result.remoteVersion);
switch (result.selection) {
case NONE:
throw new LoadingException("No acceptable module " + moduleId + " found. Local version is " + result.localVersion + " and remote version is " + result.remoteVersion + ".");
case LOCAL:
Log.i(TAG, "Selected local version of " + moduleId);
return new DynamiteModule(context);
case REMOTE:
throw new UnsupportedOperationException();
default:
throw new LoadingException("VersionPolicy returned invalid code:" + result.selection);
}
} catch (LoadingException loadingException) {
throw loadingException;
} catch (Throwable e) {
throw new LoadingException("Failed to load remote module.", e);
}
}
@NonNull
public IBinder instantiate(@NonNull String className) throws LoadingException {
try {
return (IBinder) this.moduleContext.getClassLoader().loadClass(className).newInstance();
} catch (ClassNotFoundException | IllegalAccessException | InstantiationException | RuntimeException e) {
throw new LoadingException("Failed to instantiate module class: " + className, e);
}
}
}
View on GitHub (pinned to 157c9d86ac)
Solutions
- Inspect the chained cause exception to find the real failure
- Ensure Play services / microG with the needed Dynamite modules is installed
- Retry, possibly with a VersionPolicy that forces the local module
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at play-services-basement/src/main/java/com/google/android/gms/dynamite/DynamiteModule.java:151 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of microg/GmsCore@157c9d86ac (2026-09-06).
Data as JSON: /api/errors/ec3cc173b314af61.
Report an issue: GitHub.