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

  1. Inspect the chained cause exception to find the real failure
  2. Ensure Play services / microG with the needed Dynamite modules is installed
  3. 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.