Repository navigation
Kotlin & Android: Performance, fortgeschrittenes Compose und Produktionstiefe (LRN-8) - #27
hernstev97 wants to merge 2 commits into
Conversation
…onstiefe (LRN-8) Drei neue Module: "Compose fortgeschritten" (Animation, eigene Layouts, Zeichnen, Gesten, CompositionLocal, WindowSizeClass, AndroidView) und "Performance & Debugging: Spuren lesen" laufen unterwegs auf 360 px; "Performance messen" (Layout Inspector, Profiler, Macrobenchmark, Baseline Profiles, Debugger, Logcat, StrictMode, LeakCanary) ist für den PC. Ausgebaut: navigation (verschachtelte Graphen, graph-scoped ViewModels, Ergebnisse, Bottom-Bar mit mehreren Backstacks, Predictive Back; die Übungen stack-modell und route-copy sind durch Übungen zur Navigation-API ersetzt), compose-state (State Holder mit Saver, remember mit Keys, DisposableEffect, rememberCoroutineScope, produceState, snapshotFlow), daten-netzwerk (Room-3-Relationen und Indizes, Interceptor, Authenticator, Paging 3 mit RemoteMediator, Konfliktauflösung), testing (MockWebServer, TestListenableWorkerBuilder, Hilt-Tests), architektur (Modularisierung) und gradle-release (Convention Plugins). Das Abschlussprojekt bekommt sechs neue Abnahmekriterien mit neuen IDs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- pointerInput: veraltete Werte entstehen nur bei Wechsel an derselben Stelle oder in Listen ohne Keys; neues Beispiel (Markierung in einer Skizze, braucht die Tippposition) und neue Bug-Übung dazu. - Room warnt beim Build bei Fremdschlüssel ohne Index; @Relation-Arrays sind die Room-3-Änderung, ForeignKey nicht. - Authenticator-Bug: fehlendes return statt unrealistischer Zählung, echte Compilerwarnung „Expression is unused.“. - LeakCanary im Release bricht den Start ab; benchmarkRelease übernimmt die Release-Signatur; Android vitals misst die TTID; Heißstart-Schwelle mit beiden offiziellen Quellen (1 s / 1,5 s). - Leak-Spur, Zeilennummern, Absturzbericht, Report-Einrückung, Navigations-Ausgaben, snapshotFlow-Text, Compile-Avoidance, Convention Plugins vs. subprojects, MockWebServer-Paket, compose-grundlagen- Begründung zu List (nur Erklärung, Fingerprint unverändert). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configuration
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
CI-Stand: |
Schließt die Lücken aus LRN-8 im Kurs Kotlin & Android: Performance und Debugging, fortgeschrittenes Compose und mehr Produktionstiefe in Navigation, Daten, Tests, Architektur und Build. Der Abgleich mit
content/kotlinam 22.10.2026 hat alle Lücken der Analyse vom 30.09. bestätigt; der Kurs war bei den Versionen schon aktuell (AGP 9.4, Kotlin 2.4, BOM 2026.09.00, Room 3).Was neu ist
Drei neue Module (Level 3):
Ausgebaut (alle jetzt „Am PC“):
navigationcompose-stateSaver,remembermit Keys,DisposableEffect,rememberCoroutineScope,produceState,snapshotFlowdaten-netzwerkAuthenticator, Paging 3 mitRemoteMediator, Konfliktauflösungtestingmockwebserver3),TestListenableWorkerBuilder, Hilt-Tests mit@TestInstallInarchitekturgradle-releasebuild-logicDazu: sechs neue Abnahmekriterien und zwei neue Meilensteine im Abschlussprojekt (Module, Flavors staging/prod, R8, gemessenes Baseline Profile, Lint-/detekt-Gate, interner Test-Track), 12 neue Interview-Karten (48 → 60), 12 Glossarbegriffe (48 → 60), Spickzettel, Lernplan (12 → 14 Wochen), Lernziele. Kotlin-Bereich: 26 → 29 Module, 299 → 371 Übungen (mit Bear-Track).
Entscheidungen
choice,output,bug,explain,order,practice) mit vorbereiteten Ausgaben. Der Typscenarioaus LRN-22 läuft nur in der Linux-VM. Trace-Ausschnitte sind als Text abgeschrieben, mit echten Slice-Namen aus Compose 1.12.1 (Recomposer:recompose,Compose:recompose,AndroidOwner:draw). Die Logcat-Formate für „Displayed …“ und StrictMode stammen aus dem AOSP-Quelltext.navigation/stack-modellundnavigation/route-copy, wie im Issue verlangt. Alle anderen 297 Übungen haben denselben Fingerprint wie aufmain(geprüft mit dem Content-Loader).daten-netzwerk,testing,architektur); IDs bleiben.Wie geprüft
com.android.test) mit Macrobenchmark undBaselineProfileRule,build-logicmit zwei Convention Plugins, ein Bibliotheksmodul mitinternal-Implementierung und Hilt-Bindung, ein instrumentierter Hilt-Test mit eigenem Runner.varund aus Modulen ohne Compose-Compiler komponieren neu,Listvergleicht mitequals),pointerInput-Keys bei Wiederverwendung und Wechsel an Ort und Stelle, Flow-Invariante, alle Backstack-Folgen der neuen Navigations-Übungen mitTestNavHostController,remembermit Keys, nächsterCompositionLocal-Provider, Authenticator (einmal erneuern, danach aufgeben; ohne wirksame Grenze „Too many follow-up requests: 21“), Paging-Fehler mitparams.loadSize, feldweises Zusammenführen, MockWebServer,TestListenableWorkerBuilder,@TestInstallIn, Retrofit-Pfad mit führendem/. Gradle- und Compilermeldungen in Bug-Übungen sind echte Ausgaben.pnpm content:check(keine Hinweise für Kotlin),pnpm verify kotlin,pnpm test(329 bestanden),pnpm lint,pnpm build,pnpm bear:check: grün.pointerInput(Unit)veraltet nur bei Wechsel an derselben Stelle oder in Listen ohne Keys (Beispiel und Bug-Übung neu); Room warnt doch bei Fremdschlüssel ohne Index; LeakCanary bricht im Release-Build den Start ab;benchmarkReleaseübernimmt die Release-Signatur; Android vitals bewertet die TTID; eine Bug-Übung mit zwei richtigen Zeilen ist jetzt eindeutig. Der Commit „Befunde der unabhängigen Review eingearbeitet“ listet alles.pnpm test:e2escheiterten 3 von 59 Tests: zwei PostgreSQL-Laufzeittests („Die Anweisungen konnten nicht ausgeführt werden“) undreal content fits phone, tablet and desktop viewports(LRN-31). Einzeln wiederholt bestanden alle drei, der Viewport-Test über alle echten Seiten auf 360, 768 und 1440 px. Den Viewport-Test fasse ich hier nicht an (LRN-31). Der PR ändert nur Inhalte, keinen Code.Screenshots
Überschneidungen
Keine Änderungen an
HANDBUCH.md,README.mdoder Code, deshalb keine Konflikte mit #21–#26. Die Regel „höchstens 34 Zeichen pro Codezeile in Unterwegs-Modulen“ steht noch nicht im Handbuch; das wäre eine eigene Entscheidung.LRN-8 steht bis zum Merge auf „In Review“.
🤖 Generated with Claude Code