{"record":{"id":"bbcfc511b1bf11db","repo":"Tencent/matrix","slug":"matrix-init-application-is-null","errorCode":null,"errorMessage":"matrix init, application is null","messagePattern":"matrix init, application is null","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"matrix/matrix-android/matrix-android-lib/src/main/java/com/tencent/matrix/Matrix.java","lineNumber":142,"sourceCode":"        return null;\n    }\n\n    public static class Builder {\n        private final Application application;\n\n        private PluginListener   pluginListener;\n\n        private MatrixLifecycleConfig mLifecycleConfig = new MatrixLifecycleConfig(); // default config\n\n//        private SupervisorConfig supervisorConfig;\n//        private boolean          enableFgServiceMonitor;\n//        private boolean          enableOverlayWindowMonitor;\n\n        private final HashSet<Plugin> plugins = new HashSet<>();\n\n        public Builder(Application app) {\n            if (app == null) {\n                throw new RuntimeException(\"matrix init, application is null\");\n            }\n            this.application = app;\n        }\n\n        public Builder plugin(Plugin plugin) {\n            String tag = plugin.getTag();\n            for (Plugin exist : plugins) {\n                if (tag.equals(exist.getTag())) {\n                    throw new RuntimeException(String.format(\"plugin with tag %s is already exist\", tag));\n                }\n            }\n            plugins.add(plugin);\n            return this;\n        }\n\n        public Builder pluginListener(PluginListener pluginListener) {\n            this.pluginListener = pluginListener;\n            return this;","sourceCodeStart":124,"sourceCodeEnd":160,"githubUrl":"https://github.com/Tencent/matrix/blob/3b8293bd65d47eeea7caf1f32a3a5d4d5eab60e7/matrix/matrix-android/matrix-android-lib/src/main/java/com/tencent/matrix/Matrix.java#L124-L160","documentation":"Thrown from Matrix.Builder's constructor when the Application argument is null. The Matrix library requires a valid Application context to initialize its plugins and lifecycle callbacks, so constructing a Builder without one makes the entire Matrix initialization invalid and fails fast with a RuntimeException instead of failing later in plugin setup.","triggerScenarios":"new Matrix.Builder(null), typically when getApplication()/getApplicationInfo() returns null or a context is cast incorrectly.","commonSituations":"Passing an Activity context wrongly cast to Application; calling the Builder before the Application exists (e.g. in a ContentProvider with wrong context); mocking in unit tests without an Application.","solutions":["Pass the real Application instance (Activity.getApplication() or the application parameter of Application.onCreate).","Cast the context with (Application) context.getApplicationContext() instead of the raw context.","Defer Builder construction until the Application is available."],"exampleFix":"// before\nMatrix.Builder builder = new Matrix.Builder((Application) context);\n// after\nMatrix.Builder builder = new Matrix.Builder((Application) context.getApplicationContext());","handlingStrategy":"validation","validationCode":"Application app = context.getApplicationContext() instanceof Application\n    ? (Application) context.getApplicationContext() : null;\nif (app != null) {\n    new Matrix.Builder(app);\n}","typeGuard":"Application asApp(Context c) {\n    return c instanceof Application ? (Application) c : null;\n}","tryCatchPattern":"try {\n    new Matrix.Builder(app);\n} catch (RuntimeException e) {\n    Log.e(TAG, \"Builder requires non-null Application\", e);\n}","preventionTips":["Use the Application reference given in Application.onCreate","Never cast a bare Context to Application without getApplicationContext()","Defer Matrix setup until Application is fully attached"],"tags":["android","initialization","null-check"],"backgroundTag":"null-argument","analyzedSha":"3b8293bd65d47eeea7caf1f32a3a5d4d5eab60e7","analyzedAt":"2026-09-08T08:01:39.722Z","contentChangedAt":"2026-09-08T08:01:39.722Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}