From a9c141f14611faf06554c90cfcc40bb7c453f15f Mon Sep 17 00:00:00 2001 From: Jean-Luc Makiola Date: Mon, 8 Jun 2026 15:16:36 +0200 Subject: [PATCH] chore: configure :app module gradle build MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Compose with Material 3 Expressive (1.5.0-alpha21 explicit override of BOM stable), Hilt 2.59.2 + KSP 2.3.9, DataStore. Single-module project. JVM 17 + Kotlin 2.3.21. JUnit Jupiter 6.1.0 unified (jupiter + platform). testOptions opts into JUnit Platform so JUnit5/6 tests get discovered. Note: kotlin-android plugin removed — AGP 9.0+ provides built-in Kotlin support and the plugin now hard-errors when applied alongside AGP 9.x. kotlin-compose plugin retained (separate Compose compiler plugin). Co-Authored-By: Claude Opus 4.7 (1M context) --- app/.gitignore | 1 + app/build.gradle.kts | 92 ++++++++++++++++++++++++++++++++++++++++++ app/proguard-rules.pro | 6 +++ 3 files changed, 99 insertions(+) create mode 100644 app/.gitignore create mode 100644 app/build.gradle.kts create mode 100644 app/proguard-rules.pro diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/app/build.gradle.kts b/app/build.gradle.kts new file mode 100644 index 0000000..00f0146 --- /dev/null +++ b/app/build.gradle.kts @@ -0,0 +1,92 @@ +plugins { + alias(libs.plugins.android.application) + alias(libs.plugins.kotlin.compose) + alias(libs.plugins.ksp) + alias(libs.plugins.hilt) +} + +android { + namespace = "de.jeanlucmakiola.calendula" + compileSdk = 36 + + defaultConfig { + applicationId = "de.jeanlucmakiola.calendula" + minSdk = 29 + targetSdk = 36 + versionCode = 1 + versionName = "0.1.0" + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + vectorDrawables { useSupportLibrary = true } + } + + buildTypes { + release { + isMinifyEnabled = true + isShrinkResources = true + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + debug { + applicationIdSuffix = ".debug" + isMinifyEnabled = false + } + } + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } + + buildFeatures { + compose = true + } + + packaging { + resources { + excludes += "/META-INF/{AL2.0,LGPL2.1}" + } + } + + testOptions { + unitTests.all { it.useJUnitPlatform() } + } +} + +kotlin { + compilerOptions { + jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17 + } +} + +dependencies { + implementation(libs.androidx.core.ktx) + implementation(libs.androidx.lifecycle.runtime.ktx) + implementation(libs.androidx.activity.compose) + + implementation(platform(libs.androidx.compose.bom)) + implementation(libs.androidx.ui) + implementation(libs.androidx.ui.graphics) + implementation(libs.androidx.ui.tooling.preview) + implementation(libs.androidx.material3) + + implementation(libs.hilt.android) + ksp(libs.hilt.compiler) + + implementation(libs.androidx.datastore.preferences) + + debugImplementation(libs.androidx.ui.tooling) + debugImplementation(libs.androidx.ui.test.manifest) + + testImplementation(libs.junit.jupiter.api) + testRuntimeOnly(libs.junit.jupiter.engine) + testRuntimeOnly(libs.junit.platform.launcher) + testImplementation(libs.truth) + + androidTestImplementation(libs.androidx.junit) + androidTestImplementation(libs.androidx.espresso.core) + androidTestImplementation(platform(libs.androidx.compose.bom)) + androidTestImplementation(libs.androidx.ui.test.junit4) +} diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..35eee5d --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,6 @@ +# Keep Hilt-generated classes +-keep class dagger.hilt.** { *; } +-keep class * extends dagger.hilt.android.HiltAndroidApp + +# Compose Compiler may keep its own; defaults are fine +-dontwarn org.jetbrains.annotations.**