run method

  1. @override
Future? run()
override

Executes the Android application build process.

This method orchestrates the complete Android build workflow by:

  1. Argument Processing: Parses command-line arguments and global results
  2. Configuration Setup: Creates Arguments instance with build settings
  3. Build Execution: Delegates to Arguments.build() for actual compilation
  4. Result Handling: Returns build exit code for success/failure indication

Parameters

  • Uses argResults - Command-specific argument results from CLI parsing
  • Uses globalResults - Global configuration and environment variables

Returns

Returns a Future that completes with:

  • 0 - Build completed successfully
  • >0 - Build failed with specific error code
  • null - Build process encountered unexpected termination

Build Process

The execution flow includes:

  • Environment validation (Android SDK, build tools)
  • Dependency resolution and Gradle setup
  • Source compilation and resource processing
  • APK/AAB generation with specified configuration
  • Signing process using provided credentials
  • Output file generation and validation

Error Handling

Common failure scenarios include:

  • Missing or invalid Android SDK installation
  • Incorrect signing configuration or missing keystore
  • Build dependency conflicts or resolution failures
  • Insufficient disk space or memory for build process
  • Invalid build arguments or configuration parameters

Example

// Command execution through CLI
final result = await command.run();

// Handle build results
switch (result) {
  case 0:
    logger.logInfo('Android build completed successfully');
    break;
  case 1:
    logger.logError('Build failed due to configuration errors');
    break;
  default:
    logger.logError('Build failed with exit code: $result');
}

Implementation

@override
Future? run() => Arguments.fromArgResults(argResults!, globalResults).build();