build.gradle.kts 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. plugins {
  2. alias(libs.plugins.android.application)
  3. alias(libs.plugins.kotlin.android)
  4. alias(libs.plugins.kotlin.compose)
  5. alias(libs.plugins.ksp)
  6. alias(libs.plugins.kotlin.serialization)
  7. id("kotlin-parcelize")
  8. }
  9. android {
  10. namespace = "com.codeskraps.publicpool"
  11. compileSdk = 35
  12. defaultConfig {
  13. applicationId = "com.codeskraps.publicpool"
  14. minSdk = 26
  15. targetSdk = 35
  16. versionCode = 6
  17. versionName = "1.3.1"
  18. setProperty("archivesBaseName", "publicpool-v$versionName.$versionCode")
  19. testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
  20. vectorDrawables {
  21. useSupportLibrary = true
  22. }
  23. }
  24. buildTypes {
  25. debug {
  26. applicationIdSuffix = ".debug"
  27. versionNameSuffix = "-debug"
  28. isMinifyEnabled = false
  29. proguardFiles(
  30. getDefaultProguardFile("proguard-android-optimize.txt"),
  31. "proguard-rules.pro"
  32. )
  33. }
  34. release {
  35. isMinifyEnabled = true
  36. proguardFiles(
  37. getDefaultProguardFile("proguard-android-optimize.txt"),
  38. "proguard-rules.pro"
  39. )
  40. }
  41. }
  42. compileOptions {
  43. sourceCompatibility = JavaVersion.VERSION_19
  44. targetCompatibility = JavaVersion.VERSION_19
  45. }
  46. kotlinOptions {
  47. jvmTarget = JavaVersion.VERSION_19.toString()
  48. }
  49. buildFeatures {
  50. compose = true
  51. buildConfig = true
  52. }
  53. composeOptions {
  54. kotlinCompilerExtensionVersion = libs.versions.composeCompiler.get()
  55. }
  56. packaging {
  57. resources {
  58. excludes += "/META-INF/{AL2.0,LGPL2.1}"
  59. excludes += "/META-INF/services/javax.annotation.processing.Processor"
  60. excludes += "/META-INF/INDEX.LIST"
  61. }
  62. }
  63. applicationVariants.all {
  64. val variant = this
  65. variant.outputs.all {
  66. val output = this as? com.android.build.gradle.internal.api.BaseVariantOutputImpl
  67. output?.outputFileName = "PublicPool-${variant.name}-v${variant.versionName}-${variant.versionCode}.apk"
  68. }
  69. }
  70. }
  71. dependencies {
  72. // AndroidX Core & Lifecycle
  73. implementation(libs.androidx.core.ktx)
  74. implementation(libs.androidx.core.splashscreen)
  75. implementation(libs.androidx.lifecycle.runtime.ktx)
  76. implementation(libs.androidx.activity.compose)
  77. implementation(libs.androidx.webkit) // WebView for analytics
  78. // Compose
  79. implementation(platform(libs.androidx.compose.bom))
  80. implementation(libs.androidx.ui)
  81. implementation(libs.androidx.ui.graphics)
  82. implementation(libs.androidx.ui.tooling.preview)
  83. implementation(libs.androidx.material3)
  84. implementation(libs.androidx.navigation.compose) // Consider if this belongs with Voyager or Compose UI
  85. // Networking (Ktor)
  86. implementation(libs.ktor.client.core)
  87. implementation(libs.ktor.client.android)
  88. implementation(libs.ktor.client.content.negotiation)
  89. implementation(libs.ktor.serialization.kotlinx.json)
  90. implementation(libs.ktor.client.logging)
  91. implementation(libs.logback.classic) // Logging backend for Ktor
  92. // Data Persistence
  93. implementation(libs.androidx.datastore.preferences)
  94. // Dependency Injection (Koin)
  95. implementation(platform(libs.koin.bom))
  96. implementation(libs.koin.android)
  97. implementation(libs.koin.androidx.compose)
  98. // Charting
  99. implementation(libs.anychart.android.core)
  100. // Image Loading
  101. implementation(libs.coil.compose)
  102. // Serialization
  103. implementation(libs.kotlinx.serialization.json)
  104. // Navigation (Voyager)
  105. implementation(libs.voyager.navigator)
  106. implementation(libs.voyager.koin)
  107. implementation(libs.voyager.transitions)
  108. implementation(libs.voyager.tab.navigator)
  109. // Testing
  110. testImplementation(libs.junit)
  111. androidTestImplementation(libs.androidx.junit)
  112. androidTestImplementation(libs.androidx.espresso.core)
  113. androidTestImplementation(platform(libs.androidx.compose.bom))
  114. androidTestImplementation(libs.androidx.ui.test.junit4)
  115. // Debugging
  116. debugImplementation(libs.androidx.ui.tooling)
  117. debugImplementation(libs.androidx.ui.test.manifest)
  118. }