asLody/VirtualApp · error · IllegalStateException
Initializer = NULL
Error message
Initializer = NULL
What it means
VirtualCore.initialize(VirtualInitializer) requires a non-null initializer object whose callbacks (onMainProcess/onVAppClientProcess/etc.) are invoked per process type. Passing null makes it impossible to dispatch per-process initialization, so the library throws this IllegalStateException.
Solutions
- Pass a concrete VirtualInitializer implementation implementing the callbacks needed for your process type
- If a process needs no special init, pass an empty VirtualInitializer instance instead of null
- Guard the call site: only invoke initialize() after the initializer object is constructed
Example fix
// before
VirtualCore.get().initialize(null);
// after
VirtualCore.get().initialize(new VirtualInitializer() {
@Override public void onMainProcess() { }
@Override public void onVAppClientProcess() { }
}); Defensive patterns
Strategy: validation
Validate before calling
VirtualInitializer init = provideInitializer(); if (init == null) init = new VirtualInitializer() { @Override public void onMainProcess() {} };
VirtualCore.get().initialize(init); Type guard
VirtualInitializer safeInit(VirtualInitializer i) { return i != null ? i : new VirtualInitializer() {}; } Try / catch
try { core.initialize(init); } catch (IllegalStateException e) { core.initialize(new VirtualInitializer() {}); } Prevention
- Never pass null; pass an empty VirtualInitializer for no-op per-process setup
- Construct the initializer before engine initialization
- Add unit checks in CI for null config-derived initializers
When it happens
Trigger: Calling VirtualCore.get().initialize(null) — typically a refactoring leftover or a conditional initializer variable that evaluated to null.
Common situations: Dependency-injected or config-driven initializer not constructed yet at init time; copy-pasted boilerplate call with the argument dropped.
Related errors
- VirtualCore.startup() must called in main thread.
- connection is null
- accountType is null
- response is null
- accountType is null
AI-assisted analysis of asLody/VirtualApp@666fefcb5d (2026-09-09).
Data as JSON: /api/errors/dc14c6067d4578c0.
Report an issue: GitHub.
Appendix: source
Thrown at VirtualApp/lib/src/main/java/com/lody/virtual/client/core/VirtualCore.java:230
public boolean isEngineLaunched() {
String engineProcessName = getEngineProcessName();
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningAppProcessInfo info : am.getRunningAppProcesses()) {
if (info.processName.endsWith(engineProcessName)) {
return true;
}
}
return false;
}
public String getEngineProcessName() {
return context.getString(R.string.engine_process_name);
}
public void initialize(VirtualInitializer initializer) {
if (initializer == null) {
throw new IllegalStateException("Initializer = NULL");
}
switch (processType) {
case Main:
initializer.onMainProcess();
break;
case VAppClient:
initializer.onVirtualProcess();
break;
case Server:
initializer.onServerProcess();
break;
case CHILD:
initializer.onChildProcess();
break;
}
}
private void detectProcessType() {View on GitHub (pinned to 666fefcb5d)