Android Kotlin Compose Entwicklung
Verwenden Sie dies beim Erstellen von Android-Apps mit Kotlin, Jetpack Compose, MVVM, Hilt, Room 3, DataStore, Paging 3 oder Multi-Modul-Projekten. Wird ausgelöst bei Anfragen zum Erstellen von Android-Projekten, Bildschirmen, ViewModels, Repositories, Feature-Modulen oder bei Fragen zu Android-Architekturmustern.
Kurzübersicht
| Aufgabe | Referenzdatei |
|---|---|
| Projektstruktur & Module | modularization.md |
| Architekturebenen (Domain, Data, UI, Common, ...) | architecture.md |
| Compose-Muster, Material Motion, Animation, Modifikatoren, Stabilität | compose-patterns.md |
| Barrierefreiheit, TalkBack, Label-Kopien, Live-Regionen, Espresso a11y-Prüfungen | android-accessibility.md |
| Benachrichtigungen, Vordergrunddienste, Medien/Audio, PiP, Sharesheet | android-notifications.md |
| Datensynchronisation & Offline-First-Muster | android-data-sync.md |
| Material 3 Theming, Abstandstokens, Kategorie-Passung, dynamische Farben | android-theming.md |
| Navigation3, adaptive Navigation, Qualitätsstufen für große Bildschirme | android-navigation.md |
| Kotlin-Best-Practices, View-Lebenszyklus-Interop | kotlin-patterns.md |
| Coroutines-Best-Practices | coroutines-patterns.md |
| Gradle, Produkt-Flavors, BuildConfig, Build-Performance | gradle-setup.md |
| Testansatz | testing.md |
| Internationalisierung & Lokalisierung | android-i18n.md |
| Symbole, adaptive Launcher-Spezifikationen, benutzerdefinierte Zeichnungen | android-graphics.md |
| Laufzeitberechtigungen | android-permissions.md |
| Kotlin-Delegationsmuster | kotlin-delegation.md |
| Absturzberichterstattung | crashlytics.md |
| StrictMode-Leitplanken | android-strictmode.md |
| Multi-Modul-Abhängigkeiten | dependencies.md |
| Codequalität (Detekt) | code-quality.md |
| Codeabdeckung (JaCoCo) | android-code-coverage.md |
Sicherheit, Play Integrity (Standard/Classic), Server-Dekodierung, requestHash/nonce, abgestufte Richtlinie, Behebung; Credential Manager; lokale Root-Prüfungen als Ergänzung | android-security.md |
| Entwurfsmuster | design-patterns.md |
| Leistung, Play Vitals, optionales CI-Reporting (Play Developer Reporting API), Startzeit, Neuzusammenstellung, Ruckeln, Akku | android-performance.md |
| Debugging, Logcat-Ebenen, ANR, Gradle-Fehlermuster, R8, Speicherlecks | android-debugging.md |
| Migrationsleitfäden (XML, RxJava, Navigation, Compose, Room 2→3) | migration.md |
Workflow-Entscheidungsbaum
Neues Projekt erstellen?
→ Beginnen Sie mit assets/settings.gradle.kts.template für Einstellungen und Modul-Einbindungen
→ Beginnen Sie mit assets/libs.versions.toml.template für den Versionskatalog
→ Kopieren Sie alle Dateien aus assets/convention/ nach build-logic/convention/src/main/kotlin/
→ Erstellen Sie build-logic/settings.gradle.kts (siehe assets/convention/QUICK_REFERENCE.md)
→ Fügen Sie includeBuild("build-logic") zum root settings.gradle.kts hinzu
→ Fügen Sie Plugin-Einträge zu gradle/libs.versions.toml hinzu (siehe assets/convention/QUICK_REFERENCE.md)
→ Kopieren Sie assets/proguard-rules.pro.template nach app/proguard-rules.pro
→ Lesen Sie modularization.md für Struktur und Modultypen
→ Verwenden Sie gradle-setup.md für Build-Dateien und Build-Logik
Gradle/Build-Dateien konfigurieren?
→ Verwenden Sie gradle-setup.md für Modul-build.gradle.kts-Muster
→ Verwenden Sie gradle-setup.md → "Build-Performance" für Optimierungsworkflow, Diagnose und Engpassbehebung
→ Kopieren Sie Konventions-Plugins aus assets/convention/ nach build-logic/ in Ihrem Projekt
→ Siehe assets/convention/QUICK_REFERENCE.md für Einrichtungsanweisungen und Beispiele
→ Kopieren Sie assets/proguard-rules.pro.template nach app/proguard-rules.pro für R8-Regeln
Codequalität / Detekt einrichten?
→ Verwenden Sie code-quality.md für die Einrichtung des Detekt-Konventions-Plugins
→ Beginnen Sie mit assets/detekt.yml.template für Regeln und aktivieren Sie Compose-Regeln
Abhängigkeiten hinzufügen oder aktualisieren?
→ Folgen Sie dependencies.md
→ Aktualisieren Sie assets/libs.versions.toml.template, wenn die Abhängigkeit fehlt
Neues Feature/Modul hinzufügen?
→ Folgen Sie der Modulbenennung in modularization.md
→ Implementieren Sie die Präsentation im Feature-Modul
→ Folgen Sie dem Abhängigkeitsfluss: Feature → Core/Domain → Core/Data
UI-Bildschirme/Komponenten erstellen?
→ Lesen Sie compose-patterns.md für Bildschirmarchitektur, Zustand, Komponenten, Modifikatoren
→ Verwenden Sie compose-patterns.md -> Zustandsverwaltung -> "Lade- und Aktualisierungsbenutzererfahrung" für stabiles Layout während des Ladens und Aktualisierens (vermeiden Sie Vollbild-Spinner, die den Kontext löschen)
→ Verwenden Sie android-theming.md für Material 3-Farben, Typografie und Formen
→ Stimmen Sie Kotlin-Code immer mit kotlin-patterns.md ab
→ Erstellen Sie Screen + ViewModel + UiState im Feature-Modul
→ Verwenden Sie nach Möglichkeit gemeinsame Komponenten aus core/ui
Zustand und Ereignisse verwalten?
→ Verwenden Sie StateFlow für Zustand; Channel + receiveAsFlow() für strikte einmalige UI-Befehle; SharedFlow für Multicast- oder Wiederholungsereignisse (siehe coroutines-patterns.md)
→ Überstehen Sie Prozessabbrüche mit SavedStateHandle (siehe compose-patterns.md)
App-Design (Farben, Typografie, Formen) einrichten?
→ Folgen Sie android-theming.md für Material 3-Theming und dynamische Farben
→ Verwenden Sie semantische Farbrollen aus MaterialTheme.colorScheme (niemals hartcodierte Farben); paaren Sie jede Füllung mit ihrem on*-Partner - siehe Farbpaarungsregeln
→ Deklarieren Sie den vollständigen M3-Farbsatz in Color.kt (Surface-Container, Dim/Bright, *Fixed/*FixedDim), damit dynamische Farb- und Kontrastvarianten konsistent bleiben - siehe Vollständige Farbrollenreferenz und Surface-Container-Hierarchie
→ Drücken Sie Tiefe zuerst durch Container-Ton aus, verwenden Sie Schatten nur für Komponenten, die über beliebigem Inhalt schweben - siehe Tonale Elevation vs. Schatten
→ Verwenden Sie outline für interaktive Rahmen/Fokus, outlineVariant für dekorative Trennlinien - siehe outline vs. outlineVariant
→ Unterstützen Sie helle/dunkle Designs mit Benutzereinstellungsumschaltung
→ Aktivieren Sie dynamische Farben (Material You) für API 31+, harmonisieren Sie Marken-/erweiterte Farben mit primary - siehe Markenfarbenharmonisierung
→ Beachten Sie den Systemkontrast-Schieberegler unter Android 14+ (API 34), indem Sie mittlere/hohe Kontrastschema-Varianten ausliefern und UiModeManager.getContrast() lesen - siehe Benutzerkontrastpräferenz
→ Für regionale Farbpaletten-Überschreibungen (destruktive Bereiche, Medien-Toolbars) verwenden Sie ein verschachteltes MaterialTheme mit colorScheme.copy(...) - siehe Bereichsspezifische Designs
→ Wählen Sie Card / OutlinedCard / ElevatedCard nach Oberflächentrennung, nicht nach Wichtigkeit, und überschreiben Sie Formen auf Token-Ebene - siehe Kartenvarianten und Komponentenform-Standardwerte
Kotlin-Code schreiben?
→ Folgen Sie immer kotlin-patterns.md
→ Stellen Sie sicher, dass die Praktiken mit architecture.md, modularization.md und compose-patterns.md übereinstimmen
Daten-/Domain-Ebenen einrichten?
→ Lesen Sie architecture.md
→ Hilt @Binds, Bereiche und DI-Anti-Patterns: architecture.md -> Domain-Ebene -> "Dependency Injection Setup"
→ Erstellen Sie Repository-Schnittstellen in core/domain
→ Erstellen Sie Implementierungen in core/data mit Room 3/Retrofit/DataStore
→ Verwenden Sie DataStore für einfache Schlüssel-Wert-Paare, Room 3 für komplexe relationale Daten (suspend / Flow DAOs, SQLiteDriver)
Listen und Scrollen implementieren?
→ Verwenden Sie LazyColumn/LazyRow mit stabilen Schlüsseln und contentType (siehe compose-patterns.md)
→ Für große Datensätze verwenden Sie Paging 3 (siehe compose-patterns.md -> "Paging 3")
Navigation handhaben? → Verwenden Sie Navigation3 für adaptive Navigation (siehe android-navigation.md) → Vermeiden Sie Navigations-Anti-Patterns (siehe android-navigation.md -> "Navigation Anti-Patterns")
Leistung optimieren?
→ Folgen Sie der Leistungscheckliste in android-performance.md
→ Wenn der Benutzer nach automatischen Play Console Vitals fragt (CI/Slack, keine Play Console UI), verwenden Sie android-performance.md → Optional: Play Vitals-Beobachtbarkeit (Play Developer Reporting API)
→ Verwenden Sie BasicTextField2 für hochfrequente Texteingabe
Testen? → Lesen Sie testing.md für Testphilosophie und -muster → Verwenden Sie Turbine zum Testen von Flow-Emissionen (siehe testing.md -> "Testing Flow Emissions with Turbine") → Erstellen Sie Reposit
…
(Der vollständige Inhalt wurde gekürzt, aber die Übersetzung folgt der Struktur des Originals.)