build.gradle.kts 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. plugins {
  2. id("com.android.application")
  3. kotlin("android")
  4. kotlin("plugin.serialization")
  5. id("app.cash.sqldelight")
  6. id("org.sirekanyan.version-checker")
  7. }
  8. android {
  9. namespace = "org.sirekanyan.outline"
  10. compileSdk = 34
  11. defaultConfig {
  12. applicationId = "org.sirekanyan.outline"
  13. minSdk = 21
  14. targetSdk = 34
  15. versionCode = (property("appVersionCode") as String).toInt()
  16. versionName = property("appVersionName") as String
  17. setProperty("archivesBaseName", "$applicationId-$versionName-$versionCode")
  18. vectorDrawables {
  19. useSupportLibrary = true
  20. }
  21. }
  22. buildTypes {
  23. release {
  24. isMinifyEnabled = true
  25. isShrinkResources = true
  26. proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard.pro")
  27. signingConfig = signingConfigs.create("release") {
  28. storeFile = System.getenv("SIGNING_KEYSTORE_FILE")?.let(::file)
  29. storePassword = System.getenv("SIGNING_KEYSTORE_PASSWORD")
  30. keyAlias = System.getenv("SIGNING_KEY_ALIAS")
  31. keyPassword = System.getenv("SIGNING_KEY_PASSWORD")
  32. }
  33. }
  34. }
  35. flavorDimensions += "store"
  36. productFlavors {
  37. create("fdroid") {
  38. dimension = "store"
  39. }
  40. create("play") {
  41. dimension = "store"
  42. listOf("ACRA_URI", "ACRA_LOGIN", "ACRA_PASSWORD").forEach { key ->
  43. buildConfigField("String", key, System.getenv(key)?.let { "\"$it\"" } ?: "null")
  44. }
  45. }
  46. }
  47. compileOptions {
  48. sourceCompatibility = JavaVersion.VERSION_1_8
  49. targetCompatibility = JavaVersion.VERSION_1_8
  50. }
  51. kotlinOptions {
  52. jvmTarget = "1.8"
  53. allWarningsAsErrors = true
  54. }
  55. lint {
  56. warningsAsErrors = true
  57. }
  58. buildFeatures {
  59. buildConfig = true
  60. compose = true
  61. }
  62. composeOptions {
  63. kotlinCompilerExtensionVersion = "1.5.3"
  64. }
  65. packaging {
  66. resources {
  67. excludes += "/META-INF/{AL2.0,LGPL2.1}"
  68. }
  69. }
  70. }
  71. dependencies {
  72. // compose
  73. implementation("androidx.activity:activity-compose:1.7.2")
  74. implementation("androidx.compose.material3:material3:1.1.1")
  75. // ktor
  76. implementation("io.ktor:ktor-client-cio:2.3.4")
  77. implementation("io.ktor:ktor-client-content-negotiation:2.3.4")
  78. implementation("io.ktor:ktor-serialization-kotlinx-json:2.3.4")
  79. implementation("org.slf4j:slf4j-simple:2.0.9")
  80. // sqldelight
  81. implementation("app.cash.sqldelight:android-driver:2.0.0")
  82. implementation("app.cash.sqldelight:coroutines-extensions:2.0.0")
  83. // crash reporting
  84. add("playImplementation", "ch.acra:acra-http:5.11.2")
  85. }
  86. sqldelight {
  87. databases {
  88. create("OutlineDatabase") {
  89. packageName.set("org.sirekanyan.outline.db")
  90. }
  91. }
  92. }