Dart Kurs Komposition wiederholen

Lektion 18 - Kompilierung

Wie aus Code ein laufendes Programm wird

Kompilierung bedeutet: Quellcode wird geprueft, analysiert und in eine Form uebersetzt, die ausgefuehrt werden kann. Bei Dart und Flutter ist das besonders spannend, weil Entwicklung und fertige App unterschiedlich gebaut werden.

1. Die Grundidee

Du schreibst menschenlesbaren Code. Tools machen daraus maschinennaehere oder plattformspezifische Ausgabe. Dazwischen werden Fehler gesucht, Typen geprueft und Optimierungen vorbereitet.

Quellcode
  -> Analyse
  -> Abhaengigkeiten laden
  -> Uebersetzung
  -> Optimierung
  -> ausfuehrbares Programm oder App-Bundle

2. Quellcode

Quellcode ist das, was du schreibst: Dart-Dateien, Flutter-Widgets, Klassen, Funktionen und Konfigurationen wie pubspec.yaml.

lib/
  main.dart
pubspec.yaml

3. Analyse

Analyse bedeutet: Das Tool prueft deinen Code, bevor ein Build entsteht. Dabei werden Typfehler, ungenutzte Variablen, falsche Imports und viele Stilprobleme gefunden.

dart analyze
flutter analyze

4. Interpreter-Denken vs. Compiler-Denken

Interpreter-DenkenCompiler-Denken
Code wird nah am Ausfuehren gelesenCode wird vorher uebersetzt
Schnell flexibelMehr Vorpruefung und Optimierung
Fehler tauchen teils spaeter aufViele Fehler tauchen frueher auf
Typisch bei SkriptsprachenTypisch bei App- und System-Builds

Dart kann je nach Einsatz verschieden arbeiten. Genau deshalb begegnen dir Begriffe wie JIT, AOT, Debug und Release.

5. JIT: Just in Time

JIT bedeutet: Code wird zur Laufzeit beziehungsweise sehr nah an der Laufzeit uebersetzt. Das ist fuer Entwicklung praktisch, weil Aenderungen schnell ausprobiert werden koennen.

flutter run
  -> Debug-Modus
  -> Hot Reload moeglich
  -> schneller Entwicklungsfluss

JIT ist gut fuer Lernen, Testen und schnelles Veraendern.

6. AOT: Ahead of Time

AOT bedeutet: Code wird vor der Auslieferung kompiliert. Dadurch startet die App schneller und laeuft optimierter. Das nutzt du fuer fertige Apps.

flutter build apk
flutter build appbundle
flutter build web

AOT ist gut fuer Nutzerinnen und Nutzer, weil die App nicht im Debug-Modus laufen soll.

7. Debug, Profile und Release

ModusZweck
debugEntwicklung, Hot Reload, viele Diagnose-Hilfen
profilePerformance messen mit weniger Debug-Overhead
releaseFertige App, optimiert, ohne Debug-Hilfen
flutter run
flutter run --profile
flutter run --release

8. Hot Reload vs. Hot Restart

Hot ReloadHot Restart
Aktualisiert UI-Code schnellStartet die App neu
State bleibt oft erhaltenState wird zurueckgesetzt
Gut fuer Layout, Farben, TexteGut bei Init-Code, main, Konstruktor-Aenderungen

Wenn eine Aenderung nicht sichtbar wird, obwohl der Code stimmt, probiere Hot Restart.

9. Dart-Kompilierung

Bei reinen Dart-Programmen kannst du Konsolencode ausfuehren oder zu einer ausfuehrbaren Datei kompilieren.

Ausfuehren

dart run bin/main.dart

Kompilieren

dart compile exe bin/main.dart

dart run ist praktisch beim Entwickeln. dart compile exe erstellt eine eigenstaendig ausfuehrbare Datei fuer dein System.

10. Flutter-Builds nach Plattform

CommandAusgabe
flutter build apkAndroid APK-Datei
flutter build appbundleAndroid App Bundle fuer Play Store
flutter build webWeb-Dateien in build/web
flutter build windowsWindows-Desktop-App, wenn eingerichtet
flutter build iosiOS-Build auf macOS mit Xcode

11. Build-Output verstehen

Nach einem Build landet die fertige Ausgabe meistens im Ordner build/. Dort liegen Dateien, die nicht direkt dein Quellcode sind, sondern Ergebnis des Build-Prozesses.

build/
  app/
    outputs/
      flutter-apk/
        app-release.apk
  web/
    index.html
    main.dart.js
    assets/

Build-Ordner sind Ergebnisdateien. Du bearbeitest normalerweise weiter in lib/, nicht direkt in build/.

12. Was beim Build schiefgehen kann

FehlerartTypische Ursache
AnalysefehlerTypfehler, falsche Imports, kaputte Syntax
Dependency-Fehlerpubspec.yaml falsch oder Pakete fehlen
PlattformfehlerAndroid SDK, Xcode oder Web-Support fehlt
Asset-FehlerBild/Pfad in pubspec.yaml falsch eingetragen
Runtime-FehlerBuild klappt, App crasht beim Ausfuehren

13. Saubere Build-Reihenfolge

Ein guter Ablauf verhindert, dass du erst ganz am Ende merkst, dass etwas kaputt ist.

flutter pub get
flutter analyze
flutter test
flutter run
flutter build web
flutter build apk

Nicht jedes Projekt hat Tests. Wenn Tests vorhanden sind, sollten sie vor Release-Builds laufen.

14. Build-Planung

Plane einen Build-Prozess fuer ein Flutter-Projekt als klare technische Checkliste.

Starte Build-Prozess

Fuehre flutter pub get aus

Wenn Abhaengigkeiten fehlschlagen:
  Zeige Dependency-Fehler
  Stoppe Prozess

Fuehre flutter analyze aus

Wenn Analyse Fehler findet:
  Zeige Analysefehler
  Stoppe Prozess

Wenn Tests vorhanden sind:
  Fuehre Tests aus
  Wenn Tests fehlschlagen:
    Zeige Testfehler
    Stoppe Prozess

Wenn Ziel Plattform Web ist:
  Fuehre flutter build web aus

Wenn Ziel Plattform Android ist:
  Fuehre flutter build apk aus

Zeige Pfad zur Build-Ausgabe
  1. Erklaere JIT und AOT in eigenen Worten.
  2. Vergleiche flutter run und flutter build web.
  3. Notiere, wann Hot Reload reicht und wann Hot Restart besser ist.
  4. Schreibe einen Ablaufplan fuer Debug-Build und Release-Build.
Weiter zu Methoden