- 1. Die KMP-Philosophie und Architektur
- Code-Sharing-Strategie: Warum Logik-Sharing oft besser ist als UI-Sharing.
- Projektstruktur: Aufbau des Shared Modules und der Plattform-Targets.
- Das Ökosystem: Aktueller Status der Unterstützung durch Google und JetBrains.
- 2. Der expect/actual-Mechanismus
- Plattform-Abstraktion: Wie man gemeinsame Schnittstellen definiert und plattformspezifisch implementiert.
- Interoperabilität: Aufruf von Swift/Objective-C aus Kotlin und umgekehrt.
- Native APIs: Zugriff auf Sensoren, Dateisysteme oder Bluetooth auf jedem Target.
- 3. Multiplatform Networking mit Ktor
- HTTP Client: Konfiguration von Ktor für asynchrone Netzwerkanfragen.
- Engines: Auswahl der richtigen Engine für Android (OkHttp), iOS (Darwin) und JS/Wasm.
- JSON-Parsing: Typsichere De-/Serialisierung mit Kotlin Serialization.
- 4. Datenhaltung mit SQLDelight
- Multiplatform Database: Datenbank-Tabellen einmal definieren, nativ generieren lassen.
- SQL-First: Schreiben von echtem SQL mit Typsicherheit für Kotlin.
- Migrationen: Versionsmanagement der Datenbank über alle Plattformen hinweg.
- 5. Shared Logic in der Praxis: State und Flow
- Coroutines & Flow: Reaktive Programmierung im Shared Module.
- Concurrency: Sicherer Umgang mit Threads auf verschiedenen Plattformen (Kotlin/Native Speicherverwaltung).
- Viewmodels: Gemeinsame State-Verwaltung für Android und iOS.
- 6. UI-Integration: Compose und SwiftUI
- Jetpack Compose (Android): Direkte Anbindung an den Shared Code.
- SwiftUI (iOS): Konsumieren von Kotlin Flows und State in Swift.
- Compose Multiplatform: Ausblick auf deklarative UIs für alle Plattformen (Desktop, iOS, Web).
- 7. Build-System und Gradle Multiplatform Plugin
- Target-Konfiguration: Management von Kompilaten für iOS (XCFrameworks) und Android (AAR).
- Dependency Management: Einbindung von KMP-Bibliotheken via Gradle.
- Continuous Integration: Automatisierte Builds für verschiedene Zielarchitekturen (ARM64, X64).
- 8. Web-Targets: Kotlin/JS und Kotlin/Wasm
- Browser-Integration: Kotlin-Code im Web ausführen.
- WebAssembly (Wasm): Performance-Vorteile und aktuelle Browser-Unterstützung.
- DOM-Interaktion: Zugriff auf Web-APIs direkt aus Kotlin heraus.
- 9. Praxis-Workshop: "The Shared App"
- Workshop: Entwicklung einer "Weather App" mit Shared Networking und DB.
- Integration-Task: Einbinden der Logik in eine Android-App (Compose) und eine iOS-App (SwiftUI).
- Fixing-Task: Behebung von plattformspezifischen Fehlern mittels expect/actual.
- Final Roadmap: Migrationspfad für bestehende Single-Platform-Apps zu KMP.
LernzieleDie Teilnehmenden erlernen den Aufbau eines Shared Modules für mobile Anwendungen. Ziel ist es, den
expect/actual-Mechanismus für plattformspezifischen Code anzuwenden, plattformübergreifende Bibliotheken für Networking und Datenbanken zu integrieren und die gemeinsame Logik nahtlos in native Android- und iOS-Projekte einzubinden.
Zielgruppen- Android-Entwickler: Zur Erweiterung ihrer Apps auf iOS und Web.
- iOS-Entwickler: Zum Verständnis der Integration von Kotlin-Artefakten.
- Mobile Architekten: Zur Planung konsistenter Business-Logik über Plattformen hinweg.
- Full-Stack-Entwickler: Zur Nutzung von Kotlin-Code im Frontend via WASM/JS.