build.gradle.kts 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. /*
  2. * Copyright (c) Milan Jurkulák 2023.
  3. * Contact:
  4. * e: mimoccc@gmail.com
  5. * e: mj@mjdev.org
  6. * w: https://mjdev.org
  7. */
  8. @file:Suppress("UnstableApiUsage")
  9. import org.mjdev.gradle.extensions.implementation
  10. import org.mjdev.gradle.extensions.kapt
  11. import org.mjdev.gradle.plugin.MainAppPlugin.Companion.javaVersion
  12. import org.mjdev.gradle.plugin.MainAppPlugin.Companion.kotlinCompilerExtVersion
  13. import org.mjdev.gradle.plugin.MainAppPlugin.Companion.loadKeyStoreProperties
  14. import org.mjdev.gradle.plugin.MainAppPlugin.Companion.versionCode
  15. import org.mjdev.gradle.plugin.MainAppPlugin.Companion.versionName
  16. @Suppress("PropertyName")
  17. val CONFIG_KEYSTORE_PROPERTIES_FILE = "config/keystore.properties"
  18. @Suppress("PropertyName")
  19. val SIGNING_CONFIG_NAME = "Any"
  20. plugins {
  21. id("com.android.application")
  22. kotlin("android")
  23. kotlin("kapt")
  24. id("kotlin-parcelize")
  25. id("com.google.dagger.hilt.android")
  26. id("dagger.hilt.android.plugin")
  27. // id("org.jetbrains.dokka") version "1.8.10"
  28. id("io.objectbox")
  29. id("MainAppPlugin")
  30. }
  31. android {
  32. namespace = "org.mjdev.tvapp"
  33. compileSdk = 34
  34. signingConfigs {
  35. loadKeyStoreProperties(
  36. CONFIG_KEYSTORE_PROPERTIES_FILE
  37. ) { aliasKey, passwordKey, fileStore, passwordStore ->
  38. create(SIGNING_CONFIG_NAME) {
  39. keyAlias = aliasKey
  40. keyPassword = passwordKey
  41. storeFile = fileStore
  42. storePassword = passwordStore
  43. }
  44. }
  45. }
  46. defaultConfig {
  47. applicationId = "org.mjdev.tvapp"
  48. minSdk = 21
  49. targetSdk = 34
  50. versionCode = project.versionCode
  51. versionName = project.versionName
  52. signingConfig = signingConfigs[SIGNING_CONFIG_NAME]
  53. }
  54. buildTypes {
  55. debug {
  56. applicationIdSuffix = ".debug"
  57. isDebuggable = true
  58. isMinifyEnabled = false
  59. proguardFiles(
  60. getDefaultProguardFile("proguard-android-optimize.txt"),
  61. "proguard-rules.pro"
  62. )
  63. buildConfigField("Boolean", "DEBUG_RECOMPOSE", "false")
  64. buildConfigField(
  65. "String",
  66. "SYNC_AUTH",
  67. "\"${defaultConfig.applicationId}${applicationIdSuffix}.sync\""
  68. )
  69. resValue(
  70. "string",
  71. "sync_auth",
  72. "${defaultConfig.applicationId}${applicationIdSuffix}.sync"
  73. )
  74. }
  75. release {
  76. applicationIdSuffix = ""
  77. isDebuggable = true
  78. isMinifyEnabled = false
  79. proguardFiles(
  80. getDefaultProguardFile("proguard-android-optimize.txt"),
  81. "proguard-rules.pro"
  82. )
  83. buildConfigField("Boolean", "DEBUG_RECOMPOSE", "false")
  84. buildConfigField(
  85. "String",
  86. "SYNC_AUTH",
  87. "\"${defaultConfig.applicationId}${applicationIdSuffix}.sync\""
  88. )
  89. resValue(
  90. "string",
  91. "sync_auth",
  92. "${defaultConfig.applicationId}${applicationIdSuffix}.sync"
  93. )
  94. }
  95. create("recomposing") {
  96. applicationIdSuffix = ".rcmps"
  97. isDebuggable = true
  98. isMinifyEnabled = false
  99. proguardFiles(
  100. getDefaultProguardFile("proguard-android-optimize.txt"),
  101. "proguard-rules.pro"
  102. )
  103. buildConfigField("Boolean", "DEBUG_RECOMPOSE", "true")
  104. buildConfigField(
  105. "String",
  106. "SYNC_AUTH",
  107. "\"${defaultConfig.applicationId}${applicationIdSuffix}.sync\""
  108. )
  109. resValue(
  110. "string",
  111. "sync_auth",
  112. "${defaultConfig.applicationId}${applicationIdSuffix}.sync"
  113. )
  114. multiDexEnabled = true
  115. matchingFallbacks += listOf("debug")
  116. }
  117. }
  118. buildFeatures {
  119. compose = true
  120. buildConfig = true
  121. }
  122. compileOptions {
  123. sourceCompatibility = javaVersion
  124. targetCompatibility = javaVersion
  125. }
  126. kotlinOptions {
  127. jvmTarget = javaVersion.toString()
  128. }
  129. composeOptions {
  130. kotlinCompilerExtensionVersion = kotlinCompilerExtVersion
  131. }
  132. packaging {
  133. resources.excludes.add("/META-INF/{AL2.0,LGPL2.1}")
  134. }
  135. lint {
  136. checkReleaseBuilds = false
  137. }
  138. // subprojects {
  139. // apply(plugin = "org.jetbrains.dokka")
  140. // }
  141. // tasks.dokkaGfm {
  142. // outputDirectory.set(File(projectDir, "../wiki/documentation"))
  143. // }
  144. }
  145. dependencies {
  146. // tv library by mjde milan jurkulak
  147. implementation(project(mapOf("path" to ":tvlib")))
  148. // base libs
  149. implementation("androidx.core:core-ktx:1.12.0-alpha05")
  150. // compose base libs
  151. implementation(platform("androidx.compose:compose-bom:2023.06.01"))
  152. implementation("androidx.compose.ui:ui-tooling")
  153. implementation("androidx.activity:activity-compose:1.7.2")
  154. // more icons
  155. implementation("androidx.compose.material:material-icons-extended:1.4.3")
  156. // tv compose
  157. implementation("androidx.tv:tv-foundation:1.0.0-SNAPSHOT")
  158. implementation("androidx.tv:tv-material:1.0.0-alpha07")
  159. // dagger - hilt
  160. implementation("com.google.dagger:dagger-android:2.47")
  161. implementation("com.google.dagger:dagger-android-support:2.47")
  162. implementation("com.google.dagger:dagger:2.47")
  163. implementation("com.google.dagger:hilt-android:2.47")
  164. implementation("androidx.hilt:hilt-navigation-compose:1.1.0-alpha01")
  165. // moshi json
  166. implementation("com.squareup.moshi:moshi:1.15.0")
  167. implementation("com.squareup.retrofit2:converter-moshi:2.9.0")
  168. // okhttp
  169. implementation(platform("com.squareup.okhttp3:okhttp-bom:5.0.0-alpha.11"))
  170. implementation("com.squareup.okhttp3:okhttp")
  171. implementation("com.squareup.okhttp3:logging-interceptor:5.0.0-alpha.11")
  172. // debug
  173. implementation("com.jakewharton.timber:timber:5.0.1")
  174. // kapt
  175. kapt("com.google.dagger:dagger-compiler:2.47")
  176. kapt("com.google.dagger:dagger-android-processor:2.47")
  177. kapt("com.google.dagger:hilt-compiler:2.47")
  178. kapt("com.squareup.moshi:moshi-kotlin-codegen:1.15.0")
  179. // view model
  180. implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.6.1")
  181. // navigation
  182. implementation("androidx.navigation:navigation-compose:2.7.0-beta02")
  183. // retrofit
  184. implementation("com.squareup.retrofit2:retrofit:2.9.0")
  185. implementation("com.squareup.retrofit2:converter-moshi:2.9.0")
  186. implementation("com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2")
  187. // encrypt data
  188. implementation("com.scottyab:aescrypt:0.0.1")
  189. // permission
  190. implementation("com.google.accompanist:accompanist-permissions:0.31.5-beta")
  191. // previews
  192. debugImplementation("androidx.customview:customview-poolingcontainer:1.0.0")
  193. // libs mismatch
  194. constraints {
  195. implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.0")?.apply {
  196. because("kotlin-stdlib-jdk7 is now a part of kotlin-stdlib")
  197. }
  198. implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0")?.apply {
  199. because("kotlin-stdlib-jdk8 is now a part of kotlin-stdlib")
  200. }
  201. }
  202. }