build.gradle.kts 6.4 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. import org.mjdev.gradle.dependency.anotherDependencies
  9. import org.mjdev.gradle.dependency.baseDependencies
  10. import org.mjdev.gradle.dependency.composeDependencies
  11. import org.mjdev.gradle.dependency.daggerDependencies
  12. import org.mjdev.gradle.dependency.encryptDependencies
  13. import org.mjdev.gradle.dependency.exoPlayerDependencies
  14. import org.mjdev.gradle.dependency.glideDependencies
  15. import org.mjdev.gradle.dependency.mjdevTvLib
  16. import org.mjdev.gradle.dependency.moshiDependencies
  17. import org.mjdev.gradle.dependency.okHttpDependencies
  18. import org.mjdev.gradle.dependency.permissionsDependencies
  19. import org.mjdev.gradle.dependency.retrofitDependencies
  20. import org.mjdev.gradle.dependency.sandwichDependencies
  21. import org.mjdev.gradle.dependency.testDependencies
  22. import org.mjdev.gradle.dependency.timberDependencies
  23. import org.mjdev.gradle.dependency.widgetDependencies
  24. import org.mjdev.gradle.extensions.buildConfigString
  25. import org.mjdev.gradle.extensions.loadKeyStoreProperties
  26. import org.mjdev.gradle.extensions.manifestPlaceholders
  27. import org.mjdev.gradle.extensions.stringRes
  28. import org.mjdev.gradle.extensions.suffixToString
  29. import org.mjdev.gradle.extensions.versionCode
  30. import org.mjdev.gradle.extensions.versionName
  31. import org.mjdev.gradle.plugin.javaVersion
  32. import org.mjdev.gradle.plugin.kotlinCompilerExtVersion
  33. import org.mjdev.gradle.plugin.projectCompileSdk
  34. import org.mjdev.gradle.plugin.projectMinSdk
  35. @Suppress("PropertyName")
  36. val CONFIG_KEYSTORE_PROPERTIES_FILE = "config/keystore.properties"
  37. @Suppress("PropertyName")
  38. val SIGNING_CONFIG_NAME = "Any"
  39. plugins {
  40. // kotlinAndroid()
  41. // kotlinKapt()
  42. // kotlinParcelize()
  43. // androidApplication()
  44. // hilt()
  45. // ksp()
  46. // mainAppPlugin()
  47. // objectBox()
  48. kotlin("android")
  49. kotlin("kapt")
  50. id("com.android.application")
  51. id("kotlin-parcelize")
  52. id("com.google.dagger.hilt.android")
  53. id("dagger.hilt.android.plugin")
  54. id("com.google.devtools.ksp")
  55. // id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin")
  56. // id ("app.cash.paparazzi") version "1.3.1"
  57. // id("DependencyUpdatePlugin")
  58. // id("AndroidCoreLibraryPlugin")
  59. id("MainAppPlugin")
  60. id("io.objectbox")
  61. }
  62. android {
  63. namespace = "org.mjdev.tvapp"
  64. compileSdk = projectCompileSdk
  65. signingConfigs {
  66. loadKeyStoreProperties(
  67. CONFIG_KEYSTORE_PROPERTIES_FILE
  68. ) { aliasKey, passwordKey, fileStore, passwordStore ->
  69. create(SIGNING_CONFIG_NAME) {
  70. keyAlias = aliasKey
  71. keyPassword = passwordKey
  72. storeFile = fileStore
  73. storePassword = passwordStore
  74. }
  75. }
  76. }
  77. defaultConfig {
  78. applicationId = "org.mjdev.tvapp"
  79. minSdk = projectMinSdk
  80. targetSdk = projectCompileSdk
  81. versionCode = project.versionCode
  82. versionName = project.versionName
  83. signingConfig = signingConfigs[SIGNING_CONFIG_NAME]
  84. buildConfigString(
  85. "IPTV_API_URL" to "https://iptv-org.github.io/api/",
  86. "GITHUB_USER" to "mimoccc",
  87. "GITHUB_REPOSITORY" to "tvapp"
  88. )
  89. multiDexEnabled = true
  90. manifestPlaceholders(
  91. "auth0Domain" to "@string/com_auth0_domain",
  92. "auth0Scheme" to "demo"
  93. )
  94. }
  95. buildTypes {
  96. debug {
  97. applicationIdSuffix = ".debug"
  98. isDebuggable = true
  99. isMinifyEnabled = false
  100. isShrinkResources = false
  101. isCrunchPngs = false
  102. isEmbedMicroApp = true
  103. proguardFiles(
  104. getDefaultProguardFile("proguard-android-optimize.txt"),
  105. "proguard-rules.pro"
  106. )
  107. buildConfigString(
  108. "SYNC_AUTH" to "${defaultConfig.applicationId}$applicationIdSuffix.sync"
  109. )
  110. stringRes(
  111. "sync_auth" to "${defaultConfig.applicationId}$applicationIdSuffix.sync",
  112. "app_name" to "TV App ${applicationIdSuffix.suffixToString()}"
  113. )
  114. }
  115. release {
  116. applicationIdSuffix = ""
  117. isDebuggable = false
  118. isMinifyEnabled = true
  119. isShrinkResources = true
  120. isCrunchPngs = true
  121. isEmbedMicroApp = true
  122. proguardFiles(
  123. getDefaultProguardFile("proguard-android-optimize.txt"),
  124. "proguard-rules.pro"
  125. )
  126. buildConfigString(
  127. "SYNC_AUTH" to "${defaultConfig.applicationId}$applicationIdSuffix.sync"
  128. )
  129. stringRes(
  130. "sync_auth" to "${defaultConfig.applicationId}$applicationIdSuffix.sync",
  131. "app_name" to "TV App ${applicationIdSuffix.suffixToString()}"
  132. )
  133. }
  134. }
  135. buildFeatures {
  136. compose = true
  137. buildConfig = true
  138. }
  139. compileOptions {
  140. sourceCompatibility = javaVersion
  141. targetCompatibility = javaVersion
  142. }
  143. kotlinOptions {
  144. jvmTarget = javaVersion.toString()
  145. }
  146. composeOptions {
  147. kotlinCompilerExtensionVersion = kotlinCompilerExtVersion
  148. }
  149. packaging {
  150. resources.excludes.apply {
  151. add("/META-INF/{AL2.0,LGPL2.1}")
  152. add("/META-INF/DEPENDENCIES")
  153. add("/mozilla/public-suffix-list.txt")
  154. }
  155. }
  156. lint {
  157. checkReleaseBuilds = false
  158. }
  159. kapt {
  160. correctErrorTypes = true
  161. }
  162. hilt {
  163. enableAggregatingTask = true
  164. }
  165. // applicationVariants.all {
  166. // outputs.map {
  167. // it as BaseVariantOutputImpl
  168. // }.forEach { output ->
  169. // val outputFileName = "$applicationId-$versionName.apk"
  170. // output.outputFileName = outputFileName
  171. // }
  172. // }
  173. tasks {
  174. dokkaGfm {
  175. outputDirectory.set(File(projectDir, "../wiki/documentation/"))
  176. }
  177. }
  178. mainAppConfig {
  179. createDocumentation = true
  180. }
  181. }
  182. dependencies {
  183. mjdevTvLib()
  184. baseDependencies()
  185. composeDependencies()
  186. daggerDependencies()
  187. moshiDependencies()
  188. okHttpDependencies()
  189. timberDependencies()
  190. retrofitDependencies()
  191. sandwichDependencies()
  192. glideDependencies()
  193. // imageIODependencies()
  194. exoPlayerDependencies()
  195. encryptDependencies()
  196. permissionsDependencies()
  197. anotherDependencies()
  198. widgetDependencies()
  199. testDependencies()
  200. }