🩺 Flutter Build Doctor

pub package License: MIT

Automatically diagnose and fix Flutter build issues. Stop googling error messages.

Gradle version mismatch? AGP too old? CocoaPods cache corrupted? Namespace missing? Flutter Build Doctor detects it all and fixes it in seconds.

πŸ”₯ The Problem

Every Flutter developer has wasted hours on:

  • Unsupported class file major version 65 β†’ Java/Gradle mismatch
  • Namespace not specified β†’ AGP 8.0+ breaking change
  • CocoaPods could not find compatible versions β†’ Pod cache corruption
  • Execution failed for task ':app:compileDebugKotlin' β†’ Kotlin version conflict

Flutter Build Doctor knows exactly what's wrong and how to fix it.

πŸš€ Quick Start

Install

dart pub global activate flutter_build_doctor

Run

# Navigate to your Flutter project
cd my_flutter_app

# Full diagnosis
flutter_build_doctor diagnose

# Auto-fix everything
flutter_build_doctor fix --auto

# Clean all caches
flutter_build_doctor clean

πŸ“Έ What It Looks Like

╔═══════════════════════════════════════════════════════════╗
β•‘  πŸ” Flutter Build Doctor - Diagnosis                      β•‘
β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•

🎯 Flutter / Common
────────────────────────────────────────
βœ… Flutter SDK (3.27.1 (stable))
βœ… pubspec.yaml
βœ… Build Cache

πŸ“± Android
────────────────────────────────────────
❌ Gradle Version Too Low
   Flutter 3.27 requires Gradle 8.5+. Current version 7.6.3.
   πŸ’‘ Update distributionUrl in gradle-wrapper.properties.
   πŸ”§ Auto-fixable
❌ AGP Version Too Low
   Flutter 3.27 requires AGP 8.3+. Current version 7.4.2.
   πŸ’‘ Update AGP version in build.gradle.
   πŸ”§ Auto-fixable
βœ… Kotlin Version (2.0.0)
βœ… Java Version (17)
βœ… Min SDK Version (21)

🍎 iOS
────────────────────────────────────────
βœ… CocoaPods (1.15.2)
βœ… Ruby Version (3.2.2)
βœ… Xcode Version (16.2)
βœ… Podfile

═══════════════════════════════════════════════════════════

πŸ“‹ Summary
   2 errors
   0 warnings
   9 passed

πŸ”§ 2 issue(s) can be auto-fixed

πŸ“– CLI Commands

# Diagnosis
flutter_build_doctor diagnose              # Full diagnosis
flutter_build_doctor diagnose --android    # Android only
flutter_build_doctor diagnose --ios        # iOS only

# Fixing
flutter_build_doctor fix                   # Interactive fix mode
flutter_build_doctor fix --auto            # Auto-fix all safe issues
flutter_build_doctor fix --dry-run         # Preview fixes without applying

# Cleaning
flutter_build_doctor clean                 # Clean all caches
flutter_build_doctor clean --gradle        # Gradle cache only
flutter_build_doctor clean --pods          # CocoaPods only
flutter_build_doctor clean --flutter       # Flutter build cache only

πŸ” What It Detects

Android

Issue Detection Auto-Fix
Gradle version mismatch βœ… βœ…
AGP version mismatch βœ… βœ…
Kotlin version mismatch βœ… βœ…
Java/JDK incompatible βœ… πŸ“‹ Guide
Namespace missing (AGP 8+) βœ… βœ…
MinSdk too low βœ… βœ…
Gradle cache corruption βœ… βœ…

iOS

Issue Detection Auto-Fix
CocoaPods not installed βœ… πŸ“‹ Guide
CocoaPods outdated βœ… πŸ“‹ Guide
Ruby version mismatch βœ… ⚠️
Xcode outdated βœ… πŸ“‹ Guide
Podfile issues βœ… βœ…
Pod cache corruption βœ… βœ…

Common

Issue Detection Auto-Fix
Flutter SDK missing βœ… β€”
Pubspec issues βœ… β€”
Build cache stale βœ… βœ…

πŸ”§ Programmatic API

Use it in your own tools:

import 'package:flutter_build_doctor/flutter_build_doctor.dart';

void main() async {
  final doctor = FlutterBuildDoctor(projectRoot: '.');
  
  // Full diagnosis
  final report = await doctor.diagnose();
  print('Errors: ${report.errors.length}');
  print('Warnings: ${report.warnings.length}');
  
  // Fix auto-fixable issues
  for (final issue in report.autoFixable) {
    final result = await doctor.fix(issue);
    print(result);
  }
  
  // Or fix everything at once
  final results = await doctor.fixAll();
  
  // Clean caches
  await doctor.cleanAll();
}

πŸ“Š Version Compatibility Matrix

Built-in knowledge of which versions work together:

final compat = VersionMatrix.getCompatibility('3.27.0');
print(compat!.gradle);  // 8.5+ (recommended: 8.11.1)
print(compat.agp);      // 8.3.0+ (recommended: 8.7.3)
print(compat.kotlin);   // 1.9.0+ (recommended: 2.1.0)
print(compat.java);     // 17+ (recommended: 21)

Covers Flutter 3.10 through 3.41.

β˜• Support

If this tool saves you time, consider buying me a coffee!

Buy Me A Coffee

🀝 Contributing

Contributions welcome! Especially:

  • New diagnostic checks
  • Updated version compatibility data
  • Platform-specific fixes
  • Error pattern recognition

πŸ“„ License

MIT License - see LICENSE for details.


Made with ❀️ for the Flutter community

Libraries

flutter_build_doctor
Flutter Build Doctor - Diagnose and fix Flutter build issues.