Foundation milestone (REDI-78, REDI-79):
- Multi-module skeleton: :app, :core:{domain,data,presentation,design-system},
:feature:characters:{domain,data,presentation,presentation-compose,presentation-views},
:feature:about:presentation, plus the :build-logic composite build.
- gradle/libs.versions.toml as the single source of truth ([versions]/[libraries]/
[bundles]/[plugins]); no inline versions in any build file.
- Convention plugins: architecture.android.{application,library,feature,feature.views},
domain.module, compose, koin, ktor, kotlinx.serialization.
- Pure-Kotlin domain modules; presentation-compose uses android.feature;
presentation-views uses android.feature.views (ViewBinding on, Compose off);
the UI-agnostic :presentation has neither Compose nor Views deps.
- Toolchain: AGP 9.0.1, Kotlin 2.3.20, Gradle 9.1.0, compileSdk 36, minSdk 24, Java 17.
- Minimal MainActivity placeholder; CI (assembleDebug) via GitHub Actions.
Verified: ./gradlew projects lists the full tree and ./gradlew assemble is green.
46 lines
1.1 KiB
Kotlin
46 lines
1.1 KiB
Kotlin
@file:Suppress("UnstableApiUsage")
|
|
|
|
pluginManagement {
|
|
// Convention plugins live in a composite build.
|
|
includeBuild("build-logic")
|
|
repositories {
|
|
google()
|
|
mavenCentral()
|
|
gradlePluginPortal()
|
|
}
|
|
}
|
|
|
|
plugins {
|
|
// Auto-provisions the JDK 17 toolchain used by every module.
|
|
id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0"
|
|
}
|
|
|
|
dependencyResolutionManagement {
|
|
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
|
|
repositories {
|
|
google()
|
|
mavenCentral()
|
|
}
|
|
}
|
|
|
|
rootProject.name = "Android Architecture Showcase"
|
|
|
|
// --- App ---
|
|
include(":app")
|
|
|
|
// --- Core (shared across features) ---
|
|
include(":core:domain")
|
|
include(":core:data")
|
|
include(":core:presentation")
|
|
include(":core:design-system")
|
|
|
|
// --- Feature: characters (flagship MVI; one ViewModel, two renderers) ---
|
|
include(":feature:characters:domain")
|
|
include(":feature:characters:data")
|
|
include(":feature:characters:presentation")
|
|
include(":feature:characters:presentation-compose")
|
|
include(":feature:characters:presentation-views")
|
|
|
|
// --- Feature: about (MVVM contrast) ---
|
|
include(":feature:about:presentation")
|