2
0

build.gradle.kts 7.9 KB

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