initialize static method
Initialize the core bridge layer.
This is Phase 1 of 2-phase initialization (matches Swift CppBridge.initialize exactly):
- Load native library
- Register platform adapter FIRST (file ops, logging, keychain)
- Configure C++ logging level (rac_configure_logging)
- Initialize SDK config (rac_sdk_init) - sets platform, version
- Register events callback (analytics routing)
- Initialize telemetry manager
- Register device callbacks
Call this FIRST during SDK init. Must complete before Phase 2.
environment The SDK environment (development/staging/production)
Implementation
static void initialize(SDKEnvironment environment) {
if (_isInitialized) {
_logger.debug('Already initialized, skipping');
return;
}
_environment = environment;
_logger.debug('Starting Phase 1 initialization', metadata: {
'environment': environment.name,
});
// Step 1: Load native library
_lib = PlatformLoader.load();
_logger.debug('Native library loaded');
// Step 2: Register platform adapter FIRST (file ops, logging, keychain)
// C++ needs these callbacks before any other operations
// Matches Swift: PlatformAdapter.register()
DartBridgePlatform.register();
_logger.debug('Platform adapter registered');
// Step 3: Configure C++ logging level
// Matches Swift: rac_configure_logging(environment.cEnvironment)
_configureLogging(environment);
_logger.debug('C++ logging configured');
// Step 4: Initialize SDK with configuration
// Matches Swift: rac_sdk_init(&sdkConfig) in CppBridge.State.initialize()
// This is CRITICAL - the LlamaCPP backend needs this to be set
_initializeSdkConfig(environment);
_logger.debug('SDK config initialized');
// Step 5: Register events callback (analytics routing)
// Matches Swift: Events.register()
DartBridgeEvents.register();
_logger.debug('Events callback registered');
// Step 6: Initialize telemetry manager (sync part)
// Matches Swift: Telemetry.initialize(environment: environment)
// Note: Full telemetry init with HTTP is in Phase 2
DartBridgeTelemetry.initializeSync(environment: environment);
_logger.debug('Telemetry initialized (sync)');
// Step 7: Register device callbacks
// Matches Swift: Device.register()
DartBridgeDevice.registerCallbacks();
_logger.debug('Device callbacks registered');
_isInitialized = true;
_logger.info('Phase 1 initialization complete');
}