gitignore
This commit is contained in:
+38
-2
@@ -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")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user