123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- plugins {
- alias(libs.plugins.android.application)
- alias(libs.plugins.kotlin.android)
- alias(libs.plugins.kotlin.compose)
- alias(libs.plugins.ksp)
- alias(libs.plugins.kotlin.serialization)
- id("kotlin-parcelize")
- }
- android {
- namespace = "com.codeskraps.publicpool"
- compileSdk = 35
- defaultConfig {
- applicationId = "com.codeskraps.publicpool"
- minSdk = 26
- targetSdk = 35
- versionCode = 5
- versionName = "1.3.0"
- testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
- vectorDrawables {
- useSupportLibrary = true
- }
- }
- buildTypes {
- debug {
- applicationIdSuffix = ".debug"
- versionNameSuffix = "-debug"
- isMinifyEnabled = false
- proguardFiles(
- getDefaultProguardFile("proguard-android-optimize.txt"),
- "proguard-rules.pro"
- )
- }
- release {
- isMinifyEnabled = true
- proguardFiles(
- getDefaultProguardFile("proguard-android-optimize.txt"),
- "proguard-rules.pro"
- )
- }
- }
- compileOptions {
- sourceCompatibility = JavaVersion.VERSION_19
- targetCompatibility = JavaVersion.VERSION_19
- }
- kotlinOptions {
- jvmTarget = JavaVersion.VERSION_19.toString()
- }
- buildFeatures {
- compose = true
- buildConfig = true
- }
- composeOptions {
- kotlinCompilerExtensionVersion = libs.versions.composeCompiler.get()
- }
- packaging {
- resources {
- excludes += "/META-INF/{AL2.0,LGPL2.1}"
- excludes += "/META-INF/services/javax.annotation.processing.Processor"
- excludes += "/META-INF/INDEX.LIST"
- }
- }
-
- applicationVariants.all {
- val variant = this
- variant.outputs.all {
- val output = this as? com.android.build.gradle.internal.api.BaseVariantOutputImpl
- output?.outputFileName = "PublicPool-${variant.name}-v${variant.versionName}-${variant.versionCode}.apk"
- }
- }
- }
- dependencies {
- // AndroidX Core & Lifecycle
- implementation(libs.androidx.core.ktx)
- implementation(libs.androidx.core.splashscreen)
- implementation(libs.androidx.lifecycle.runtime.ktx)
- implementation(libs.androidx.activity.compose)
- implementation(libs.androidx.webkit) // WebView for analytics
- // 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.androidx.navigation.compose) // Consider if this belongs with Voyager or Compose UI
- // Networking (Ktor)
- implementation(libs.ktor.client.core)
- implementation(libs.ktor.client.android)
- implementation(libs.ktor.client.content.negotiation)
- implementation(libs.ktor.serialization.kotlinx.json)
- implementation(libs.ktor.client.logging)
- implementation(libs.logback.classic) // Logging backend for Ktor
- // Data Persistence
- implementation(libs.androidx.datastore.preferences)
- // Dependency Injection (Koin)
- implementation(platform(libs.koin.bom))
- implementation(libs.koin.android)
- implementation(libs.koin.androidx.compose)
- // Charting
- implementation(libs.anychart.android.core)
- // Image Loading
- implementation(libs.coil.compose)
- // Serialization
- implementation(libs.kotlinx.serialization.json)
- // Navigation (Voyager)
- implementation(libs.voyager.navigator)
- implementation(libs.voyager.koin)
- implementation(libs.voyager.transitions)
- implementation(libs.voyager.tab.navigator)
- // Testing
- testImplementation(libs.junit)
- androidTestImplementation(libs.androidx.junit)
- androidTestImplementation(libs.androidx.espresso.core)
- androidTestImplementation(platform(libs.androidx.compose.bom))
- androidTestImplementation(libs.androidx.ui.test.junit4)
- // Debugging
- debugImplementation(libs.androidx.ui.tooling)
- debugImplementation(libs.androidx.ui.test.manifest)
- }
|