RedBoxVM API Reference
Complete API documentation for integrating RedBoxVM into your applications. This reference covers all public APIs, interfaces, and integration patterns.
SDK Version: This documentation covers RedBoxVM SDK v2.1.0 and later.
Core Classes
RedBoxManager
The main entry point for all RedBoxVM operations.
public class RedBoxManager {
// Singleton instance
public static RedBoxManager getInstance()
// Initialize the virtualization engine
public void initialize(Context context)
// Create a new virtual environment
public VirtualEnvironment createEnvironment(String packageName)
// Launch an app in virtual environment
public boolean launchApp(VirtualEnvironment env, String packageName)
// Get all virtual environments
public List<VirtualEnvironment> getEnvironments()
// Destroy a virtual environment
public void destroyEnvironment(VirtualEnvironment env)
}
Usage Example
// Initialize RedBoxVM
RedBoxManager manager = RedBoxManager.getInstance();
manager.initialize(this);
// Create virtual environment for WhatsApp
VirtualEnvironment whatsappEnv = manager.createEnvironment("com.whatsapp");
// Launch WhatsApp in virtual environment
boolean success = manager.launchApp(whatsappEnv, "com.whatsapp");
if (success) {
Log.d("RedBox", "WhatsApp launched successfully in virtual environment");
}
VirtualEnvironment
Represents an isolated virtual environment for running apps.
public class VirtualEnvironment {
// Get environment ID
public String getId()
// Get associated package name
public String getPackageName()
// Check if environment is active
public boolean isActive()
// Get environment configuration
public EnvironmentConfig getConfig()
// Set environment configuration
public void setConfig(EnvironmentConfig config)
// Get virtual file system path
public String getVirtualPath()
// Get running processes in this environment
public List<ProcessInfo> getProcesses()
}
EnvironmentConfig
Configuration options for virtual environments.
public class EnvironmentConfig {
// Network isolation settings
public boolean networkIsolation = true;
// File system isolation
public boolean fileSystemIsolation = true;
// Custom storage path
public String customStoragePath = null;
// Memory limit (MB)
public int memoryLimit = 512;
// Enable debugging
public boolean debugMode = false;
// VPN configuration
public VpnConfig vpnConfig = null;
}
Event Listeners
AppListener
Listen to virtual app lifecycle events.
public interface AppListener {
void onAppStarted(String packageName, VirtualEnvironment env);
void onAppStopped(String packageName, VirtualEnvironment env);
void onAppCrashed(String packageName, VirtualEnvironment env, Exception error);
void onEnvironmentCreated(VirtualEnvironment env);
void onEnvironmentDestroyed(VirtualEnvironment env);
}
Implementation Example
manager.setAppListener(new AppListener() {
@Override
public void onAppStarted(String packageName, VirtualEnvironment env) {
Log.d("RedBox", "App started: " + packageName + " in env: " + env.getId());
// Update UI, send analytics, etc.
}
@Override
public void onAppCrashed(String packageName, VirtualEnvironment env, Exception error) {
Log.e("RedBox", "App crashed: " + packageName, error);
// Handle crash, show error dialog, etc.
}
// ... implement other methods
});
API Flow Diagram
Understanding the typical API usage flow:
sequenceDiagram
participant App as Your App
participant Manager as RedBoxManager
participant Env as VirtualEnvironment
participant Core as Core Engine
App->>Manager: getInstance()
App->>Manager: initialize(context)
Manager->>Core: Initialize Engine
App->>Manager: createEnvironment(packageName)
Manager->>Core: Create Virtual Environment
Core->>Env: New Environment Created
Manager->>App: Return VirtualEnvironment
App->>Manager: launchApp(env, packageName)
Manager->>Core: Launch App in Environment
Core->>Env: Start Virtual App Process
Env->>Manager: App Started Event
Manager->>App: onAppStarted() callback
Advanced APIs
ProcessManager
Advanced process management within virtual environments.
public class ProcessManager {
// Get process manager instance
public static ProcessManager getInstance()
// Kill a specific process
public boolean killProcess(VirtualEnvironment env, int pid)
// Get process information
public ProcessInfo getProcessInfo(VirtualEnvironment env, int pid)
// Monitor process resource usage
public void startResourceMonitoring(VirtualEnvironment env, ResourceListener listener)
// Set process priority
public void setProcessPriority(VirtualEnvironment env, int pid, int priority)
}
FileSystemManager
Virtual file system operations.
public class FileSystemManager {
// Copy file between environments
public boolean copyFile(VirtualEnvironment source, VirtualEnvironment dest, String path)
// Get virtual file system usage
public StorageInfo getStorageInfo(VirtualEnvironment env)
// Clean up temporary files
public void cleanupTempFiles(VirtualEnvironment env)
// Export environment data
public boolean exportEnvironment(VirtualEnvironment env, String exportPath)
// Import environment data
public VirtualEnvironment importEnvironment(String importPath)
}
Error Handling
Exception Types
Exception | Description | Common Causes |
---|---|---|
VirtualizationException | General virtualization error | Engine not initialized, insufficient permissions |
EnvironmentException | Virtual environment error | Environment not found, already destroyed |
AppLaunchException | App launch failure | App not installed, incompatible app |
ResourceException | Resource allocation error | Insufficient memory, storage full |
Error Handling Example
try {
VirtualEnvironment env = manager.createEnvironment("com.example.app");
boolean success = manager.launchApp(env, "com.example.app");
if (!success) {
throw new AppLaunchException("Failed to launch app");
}
} catch (VirtualizationException e) {
Log.e("RedBox", "Virtualization error", e);
// Show user-friendly error message
showErrorDialog("Virtualization failed: " + e.getMessage());
} catch (AppLaunchException e) {
Log.e("RedBox", "App launch error", e);
// Handle app-specific launch issues
handleAppLaunchError(e);
} catch (Exception e) {
Log.e("RedBox", "Unexpected error", e);
// Handle unexpected errors
crashlytics.recordException(e);
}
Configuration Options
Global Configuration
public class RedBoxConfig {
// Maximum number of concurrent virtual environments
public static final int MAX_ENVIRONMENTS = 10;
// Default memory limit per environment (MB)
public static final int DEFAULT_MEMORY_LIMIT = 512;
// Enable performance monitoring
public boolean performanceMonitoring = false;
// Log level
public LogLevel logLevel = LogLevel.INFO;
// Custom hook configurations
public Map<String, HookConfig> customHooks = new HashMap<>();
}
Network Configuration
public class NetworkConfig {
// Enable network isolation
public boolean isolateNetwork = true;
// Custom DNS servers
public List<String> dnsServers = Arrays.asList("8.8.8.8", "8.8.4.4");
// Proxy configuration
public ProxyConfig proxyConfig = null;
// VPN integration
public boolean enableVpnIntegration = false;
// Network monitoring
public boolean monitorNetworkTraffic = false;
}
Performance Monitoring
ResourceMonitor
public class ResourceMonitor {
// Start monitoring resources
public void startMonitoring(VirtualEnvironment env, ResourceListener listener)
// Get current resource usage
public ResourceUsage getCurrentUsage(VirtualEnvironment env)
// Get historical resource data
public List<ResourceUsage> getHistoricalData(VirtualEnvironment env, long timeRange)
// Set resource limits
public void setResourceLimits(VirtualEnvironment env, ResourceLimits limits)
}
ResourceUsage Data Structure
public class ResourceUsage {
public long timestamp;
public int memoryUsageMB;
public float cpuUsagePercent;
public long networkBytesIn;
public long networkBytesOut;
public long storageUsedMB;
public int activeProcesses;
}
Integration Patterns
Singleton Pattern
public class MyRedBoxIntegration {
private static MyRedBoxIntegration instance;
private RedBoxManager redBoxManager;
private MyRedBoxIntegration() {
redBoxManager = RedBoxManager.getInstance();
}
public static MyRedBoxIntegration getInstance() {
if (instance == null) {
synchronized (MyRedBoxIntegration.class) {
if (instance == null) {
instance = new MyRedBoxIntegration();
}
}
}
return instance;
}
}
Observer Pattern
public class VirtualAppObserver implements AppListener {
private List<VirtualAppCallback> callbacks = new ArrayList<>();
public void addCallback(VirtualAppCallback callback) {
callbacks.add(callback);
}
@Override
public void onAppStarted(String packageName, VirtualEnvironment env) {
for (VirtualAppCallback callback : callbacks) {
callback.onVirtualAppEvent(packageName, env, "STARTED");
}
}
}
Thread Safety: All RedBoxVM APIs are thread-safe, but it's recommended to perform operations on background threads to avoid blocking the UI.