// ───────────────────────────────────────────────────────────────────────────── // :host-registry (A12) — Host list + LastSessionStore behind interfaces, backed by // Jetpack DataStore (Preferences). Mirrors the iOS HostRegistry package: storage // lives behind an interface (HostStore / LastSessionStore), the immutable list // transforms (upserting/removing) are shared helpers that never mutate, and the // in-memory doubles double as JVM-testable fakes for the AW4 ViewModel tests. // // Android-framework-bound (DataStore needs a Context/File), so DataStore-backed // stores are exercised in androidTest (compile here, run on device — no emulator). // The pure logic (Host list transforms, in-memory doubles, HostCodec at-rest // reconstruct/drop-invalid) is covered by plain JVM JUnit5 unit tests. // // AGP 9 has built-in Kotlin → apply ONLY com.android.library (adding // org.jetbrains.kotlin.android errors). The serialization compiler plugin is added // via its alias and composes with the built-in Kotlin compilation (PersistedHost // is @Serializable — the at-rest DTO). // ───────────────────────────────────────────────────────────────────────────── plugins { id("com.android.library") alias(libs.plugins.kotlin.serialization) } android { namespace = "wang.yaojia.webterm.hostregistry" compileSdk = 36 defaultConfig { minSdk = 29 testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } } kotlin { jvmToolchain(17) } dependencies { api(project(":wire-protocol")) implementation(libs.kotlinx.serialization.json) implementation(libs.kotlinx.coroutines.core) implementation(libs.androidx.datastore.preferences) testImplementation(libs.bundles.unit.test) testRuntimeOnly(libs.junit.platform.launcher) androidTestImplementation(libs.androidx.test.ext.junit) androidTestImplementation(libs.androidx.test.core) androidTestImplementation(libs.androidx.test.runner) } // Local (JVM) unit tests run on the JUnit 5 platform, matching the pure modules // and the :app design-token tests. tasks.withType().configureEach { useJUnitPlatform() }