{"record":{"id":"ec3cc173b314af61","repo":"microg/GmsCore","slug":"failed-to-load-remote-module","errorCode":null,"errorMessage":"Failed to load remote module.","messagePattern":"Failed to load remote module\\.","errorType":"exception","errorClass":"DynamiteModule.LoadingException","httpStatus":null,"severity":"error","filePath":"play-services-basement/src/main/java/com/google/android/gms/dynamite/DynamiteModule.java","lineNumber":151,"sourceCode":"        if (applicationContext == null) throw new LoadingException(\"null application Context\", null);\n        try {\n            VersionPolicy.SelectionResult result = policy.selectModule(context, moduleId, VersionPolicy.IVersions.Default);\n            Log.i(TAG, \"Considering local module \" + moduleId + \":\" + result.localVersion + \" and remote module \" + moduleId + \":\" + result.remoteVersion);\n            switch (result.selection) {\n                case NONE:\n                    throw new LoadingException(\"No acceptable module \" + moduleId + \" found. Local version is \" + result.localVersion + \" and remote version is \" + result.remoteVersion + \".\");\n                case LOCAL:\n                    Log.i(TAG, \"Selected local version of \" + moduleId);\n                    return new DynamiteModule(context);\n                case REMOTE:\n                    throw new UnsupportedOperationException();\n                default:\n                    throw new LoadingException(\"VersionPolicy returned invalid code:\" + result.selection);\n            }\n        } catch (LoadingException loadingException) {\n            throw loadingException;\n        } catch (Throwable e) {\n            throw new LoadingException(\"Failed to load remote module.\", e);\n        }\n    }\n\n    @NonNull\n    public IBinder instantiate(@NonNull String className) throws LoadingException {\n        try {\n            return (IBinder) this.moduleContext.getClassLoader().loadClass(className).newInstance();\n        } catch (ClassNotFoundException | IllegalAccessException | InstantiationException | RuntimeException e) {\n            throw new LoadingException(\"Failed to instantiate module class: \" + className, e);\n        }\n    }\n}\n","sourceCodeStart":133,"sourceCodeEnd":164,"githubUrl":"https://github.com/microg/GmsCore/blob/157c9d86ac46c195a86c2f15ab55c84036223f95/play-services-basement/src/main/java/com/google/android/gms/dynamite/DynamiteModule.java#L133-L164","documentation":"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.","triggerScenarios":"Thrown at play-services-basement/src/main/java/com/google/android/gms/dynamite/DynamiteModule.java:151 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","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"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"157c9d86ac46c195a86c2f15ab55c84036223f95","analyzedAt":"2026-09-06T17:27:33.892Z","contentChangedAt":"2026-09-06T17:27:33.892Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}