build.gradle.kts 4.1 KB

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