From 64539324e8fe974e4088e155c9ffbccc6ec3df95 Mon Sep 17 00:00:00 2001 From: Jacob Hagstedt Date: Sun, 18 Oct 2026 10:39:04 +0200 Subject: [PATCH] app: release Hilt wiring of :data (pre-M8) AppBuildInfo from BuildConfig for both variants (buildConfig enabled); the release source set includes DataBindingsModule (D-041), so features' @HiltViewModels resolve in release as they do against the debug fakes. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01TQd3pEP9UeN2uifbHknQ7B --- android/app/build.gradle.kts | 4 ++++ .../hagstedt/kvitt/di/AppBuildInfoModule.kt | 24 +++++++++++++++++++ .../kvitt/release/ReleaseDataModule.kt | 14 +++++++++++ 3 files changed, 42 insertions(+) create mode 100644 android/app/src/main/kotlin/se/hagstedt/kvitt/di/AppBuildInfoModule.kt create mode 100644 android/app/src/release/kotlin/se/hagstedt/kvitt/release/ReleaseDataModule.kt diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index 8e2e799..2fd70a9 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -14,6 +14,10 @@ android { versionCode = providers.gradleProperty("kvitt.versionCode").orElse("1").get().toInt() versionName = providers.gradleProperty("kvitt.versionName").orElse("dev").get() } + // BuildConfig carries versionCode, versionName and DEBUG into AppBuildInfo (:data, D-041). + buildFeatures { + buildConfig = true + } buildTypes { debug { applicationIdSuffix = ".debug" diff --git a/android/app/src/main/kotlin/se/hagstedt/kvitt/di/AppBuildInfoModule.kt b/android/app/src/main/kotlin/se/hagstedt/kvitt/di/AppBuildInfoModule.kt new file mode 100644 index 0000000..ba4b12e --- /dev/null +++ b/android/app/src/main/kotlin/se/hagstedt/kvitt/di/AppBuildInfoModule.kt @@ -0,0 +1,24 @@ +package se.hagstedt.kvitt.di + +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import se.hagstedt.kvitt.BuildConfig +import se.hagstedt.kvitt.data.di.AppBuildInfo +import javax.inject.Singleton + +/** + * Both variants: the app's version (ยง10.6) and build type for `:data`'s `DataModule`, which Hilt installs in debug and + * release alike (it binds no `:core:model` interface, D-041). + */ +@Module +@InstallIn(SingletonComponent::class) +object AppBuildInfoModule { + @Provides @Singleton + fun buildInfo(): AppBuildInfo = AppBuildInfo( + versionCode = BuildConfig.VERSION_CODE, + versionName = BuildConfig.VERSION_NAME, + debug = BuildConfig.DEBUG, + ) +} diff --git a/android/app/src/release/kotlin/se/hagstedt/kvitt/release/ReleaseDataModule.kt b/android/app/src/release/kotlin/se/hagstedt/kvitt/release/ReleaseDataModule.kt new file mode 100644 index 0000000..6f69aab --- /dev/null +++ b/android/app/src/release/kotlin/se/hagstedt/kvitt/release/ReleaseDataModule.kt @@ -0,0 +1,14 @@ +package se.hagstedt.kvitt.release + +import dagger.Module +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import se.hagstedt.kvitt.data.di.DataBindingsModule + +/** + * Release builds only (src/release): binds every `:core:model` repository interface to its `:data` implementation by + * including [DataBindingsModule] (`@DisableInstallInCheck`, D-041). Debug binds the fakes instead (`DebugFakesModule`). + */ +@Module(includes = [DataBindingsModule::class]) +@InstallIn(SingletonComponent::class) +interface ReleaseDataModule