gitignore

This commit is contained in:
NOrtmann1
2026-08-20 18:58:02 +02:00
parent 0c5b571ec7
commit b6e7ce999b
25 changed files with 563 additions and 4 deletions
+38 -2
View File
@@ -18,6 +18,38 @@ plugins {
id("com.google.devtools.ksp")
}
/**
* Room-Version bewusst auf 2.6.1 statt der aktuellen 2.8.4 fixiert, um einen reproduzierbaren
* AbstractMethodError beim Schema-Export (:app:kspDebugKotlin) zu vermeiden:
*
* "androidx.room.migration.bundle.FieldBundle$$serializer does not define or inherit
* typeParametersSerializers()"
*
* Root Cause (bestätigt über die offiziellen Room-Release-Notes,
* https://developer.android.com/jetpack/androidx/releases/room#2.7.0): Mit Room 2.7.0
* (9. April 2025) wurde Room für Kotlin Multiplatform refaktoriert. Im Zuge dieses Umbaus wurde
* die Serialisierung der Schema-Bundle-Klassen (FieldBundle, EntityBundle, ...) auf
* kotlinx.serialization umgestellt, da das vorher verwendete JVM-only-Verfahren nicht
* KMP-tauglich war. Diese vorkompilierten Bundle-Klassen sind seitdem an eine bestimmte
* kotlinx-serialization-core-Binärversion gebunden (siehe GeneratedSerializer.
* typeParametersSerializers(), eingeführt in kotlinx-serialization-core 1.8.0) - ein
* Klassenpfad-Konflikt, der sich per Dependency-Resolution allein nicht zuverlässig lösen
* lässt (bestätigt: selbst mit vollständig auf 1.8.1 konsolidiertem KSP-Klassenpfad bleibt der
* Fehler bestehen).
*
* Room 2.6.1 (29. November 2023) liegt vor diesem KMP-Umbau. FieldBundle & Co. haben dort keine
* kotlinx.serialization-generierte $$serializer-Klasse - die Fehlerklasse kann strukturell gar
* nicht auftreten, unabhängig von einer sonst im Projekt aufgelösten kotlinx-serialization-
* Version (z. B. für die typsicheren Navigations-Routen, siehe dependencies-Block unten).
* exportSchema = true (AppDatabase.kt) bleibt dadurch ohne Einschränkung nutzbar.
*
* Bewusster Trade-off: 2.6.1 verzichtet auf alle Neuerungen seit 2.7.0 (KMP, überarbeiteter
* Connection-Pool, diverse Bugfixes bis 2.8.4). Für dieses rein Android-native Projekt ohne
* KMP-Bedarf ist das unkritisch. Sobald Google diesen Bug in einer neueren Room-Version behebt,
* sollte diese Versionsfixierung zurückgerollt werden - das ist bewusst festgehaltene
* technische Schuld, kein Dauerzustand.
*/
android {
namespace = "de.medapp.wunddoku"
compileSdk = 35
@@ -60,8 +92,11 @@ android {
// Room exportiert bei exportSchema = true die Schema-Historie als JSON hierher – Grundlage
// für nachvollziehbare, spätere Migrationen (Aufgabenstellung Abschnitt 16).
// room.generateKotlin: In Room 2.6.1 (siehe Versionsbegründung oben) ist Kotlin-Codegen noch
// nicht wie ab 2.7.0 standardmäßig aktiv, sondern muss explizit gesetzt werden.
ksp {
arg("room.schemaLocation", "$projectDir/schemas")
arg("room.generateKotlin", "true")
}
packaging {
@@ -99,7 +134,8 @@ dependencies {
implementation("androidx.navigation:navigation-compose:2.8.4")
// --- Room ---
val roomVersion = "2.8.4"
// Version 2.6.1 bewusst statt aktueller Version - Begründung siehe Kommentar oben im File.
val roomVersion = "2.6.1"
implementation("androidx.room:room-runtime:$roomVersion")
implementation("androidx.room:room-ktx:$roomVersion")
ksp("androidx.room:room-compiler:$roomVersion")
@@ -117,4 +153,4 @@ dependencies {
androidTestImplementation("androidx.test.ext:junit:1.2.1")
androidTestImplementation("androidx.test.espresso:espresso-core:3.6.1")
androidTestImplementation("androidx.compose.ui:ui-test-junit4")
}
}