build.gradle.kts 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  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. buildConfigField("String", "SYNC_AUTH", "\"$applicationId.sync\"")
  54. resValue("string", "sync_auth", "$applicationId.sync")
  55. }
  56. buildTypes {
  57. debug {
  58. applicationIdSuffix = ".debug"
  59. isDebuggable = true
  60. isMinifyEnabled = false
  61. proguardFiles(
  62. getDefaultProguardFile("proguard-android-optimize.txt"),
  63. "proguard-rules.pro"
  64. )
  65. }
  66. release {
  67. applicationIdSuffix = ""
  68. isDebuggable = true
  69. isMinifyEnabled = false
  70. proguardFiles(
  71. getDefaultProguardFile("proguard-android-optimize.txt"),
  72. "proguard-rules.pro"
  73. )
  74. }
  75. }
  76. buildFeatures {
  77. compose = true
  78. buildConfig = true
  79. }
  80. compileOptions {
  81. sourceCompatibility = javaVersion
  82. targetCompatibility = javaVersion
  83. }
  84. kotlinOptions {
  85. jvmTarget = javaVersion.toString()
  86. }
  87. composeOptions {
  88. kotlinCompilerExtensionVersion = kotlinCompilerExtVersion
  89. }
  90. packaging {
  91. resources.excludes.add("/META-INF/{AL2.0,LGPL2.1}")
  92. }
  93. lint {
  94. checkReleaseBuilds = false
  95. }
  96. subprojects {
  97. apply(plugin = "org.jetbrains.dokka")
  98. }
  99. tasks.dokkaGfm {
  100. outputDirectory.set(File(projectDir, "../wiki/documentation"))
  101. }
  102. // tasks.register("prepareReleaseNotes") {
  103. // doLast {
  104. // exec {
  105. // workingDir(rootDir)
  106. // args(getVersionName())
  107. // executable("./scripts/git_log.sh")
  108. // }
  109. // }
  110. // }
  111. //
  112. // afterEvaluate {
  113. // // all versions release notes
  114. // tasks.findByName("assembleDebug")?.finalizedBy("prepareReleaseNotes")
  115. // tasks.findByName("assembleRelease")?.finalizedBy("prepareReleaseNotes")
  116. //
  117. // // dokka documentation generation
  118. // tasks.findByName("prepareReleaseNotes")?.finalizedBy("dokkaGfm")
  119. // }
  120. }
  121. dependencies {
  122. // base libs
  123. implementation("androidx.core:core-ktx:1.12.0-alpha05")
  124. // reflect / debug purposes only
  125. implementation(kotlin("reflect", "1.8.21"))
  126. // window manager
  127. implementation("androidx.window:window:1.1.0")
  128. // compose base libs
  129. implementation(
  130. platform("androidx.compose:compose-bom:2023.06.01")
  131. )
  132. implementation("androidx.compose.ui:ui-tooling")
  133. implementation("androidx.activity:activity-compose:1.7.2")
  134. // more icons
  135. implementation("androidx.compose.material:material-icons-extended:1.4.3")
  136. // tv compose
  137. implementation("androidx.tv:tv-foundation:1.0.0-SNAPSHOT")
  138. implementation("androidx.tv:tv-material:1.0.0-alpha07")
  139. // paging
  140. implementation("androidx.paging:paging-compose:3.2.0-rc01")
  141. // view model
  142. implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.6.1")
  143. // navigation
  144. implementation("androidx.navigation:navigation-compose:2.7.0-beta02")
  145. // image loading
  146. implementation("io.coil-kt:coil-base:2.4.0")
  147. implementation("io.coil-kt:coil-gif:2.2.2")
  148. implementation("io.coil-kt:coil-svg:1.2.2")
  149. implementation("io.coil-kt:coil-video:1.2.2")
  150. implementation("io.coil-kt:coil-compose:2.4.0")
  151. implementation("com.github.skydoves:landscapist-coil:2.2.2")
  152. // constraint layout // todo remove
  153. implementation("androidx.constraintlayout:constraintlayout-compose:1.0.1")
  154. // debug
  155. implementation("com.jakewharton.timber:timber:5.0.1")
  156. // dagger core
  157. implementation("com.google.dagger:dagger:2.46.1")
  158. implementation("androidx.compose.material3:material3:1.1.1")
  159. kapt("com.google.dagger:dagger-compiler:2.46.1")
  160. // dagger android
  161. implementation("com.google.dagger:dagger-android:2.46.1")
  162. implementation("com.google.dagger:dagger-android-support:2.46.1")
  163. kapt("com.google.dagger:dagger-android-processor:2.46.1")
  164. // dagger - hilt
  165. implementation("com.google.dagger:hilt-android:2.46.1")
  166. implementation("androidx.hilt:hilt-navigation-compose:1.1.0-alpha01")
  167. kapt("com.google.dagger:hilt-compiler:2.46.1")
  168. // okhttp
  169. // define a BOM and its version
  170. implementation(platform("com.squareup.okhttp3:okhttp-bom:4.11.0"))
  171. implementation("com.squareup.okhttp3:okhttp")
  172. implementation("com.squareup.okhttp3:logging-interceptor")
  173. // moshi json
  174. implementation("com.squareup.moshi:moshi:1.15.0")
  175. implementation("com.squareup.retrofit2:converter-moshi:2.9.0")
  176. kapt("com.squareup.moshi:moshi-kotlin-codegen:1.15.0")
  177. // retrofit
  178. implementation("com.squareup.retrofit2:retrofit:2.9.0")
  179. implementation("com.squareup.retrofit2:converter-moshi:2.9.0")
  180. implementation("com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2")
  181. // database
  182. // db encrypt data
  183. implementation("com.scottyab:aescrypt:0.0.1")
  184. // exoplayer
  185. implementation("androidx.media3:media3-exoplayer:1.1.0")
  186. implementation("androidx.media3:media3-exoplayer-dash:1.1.0")
  187. implementation("androidx.media3:media3-exoplayer-hls:1.1.0")
  188. implementation("androidx.media3:media3-exoplayer-rtsp:1.1.0")
  189. implementation("androidx.media3:media3-exoplayer-ima:1.1.0")
  190. implementation("androidx.media3:media3-datasource-cronet:1.1.0")
  191. implementation("androidx.media3:media3-datasource-okhttp:1.1.0")
  192. implementation("androidx.media3:media3-datasource-rtmp:1.1.0")
  193. implementation("androidx.media3:media3-ui:1.1.0")
  194. implementation("androidx.media3:media3-ui-leanback:1.1.0")
  195. implementation("androidx.media3:media3-session:1.1.0")
  196. implementation("androidx.media3:media3-extractor:1.1.0")
  197. implementation("androidx.media3:media3-cast:1.1.0")
  198. implementation("androidx.media3:media3-exoplayer-workmanager:1.1.0")
  199. implementation("androidx.media3:media3-transformer:1.1.0")
  200. implementation("androidx.media3:media3-database:1.1.0")
  201. implementation("androidx.media3:media3-decoder:1.1.0")
  202. implementation("androidx.media3:media3-datasource:1.1.0")
  203. implementation("androidx.media3:media3-common:1.1.0")
  204. // implementation ("com.rubensousa.dpadrecyclerview:dpadrecyclerview:1.1.0-alpha02")
  205. // implementation ("com.rubensousa.dpadrecyclerview:dpadrecyclerview-compose:1.1.0-alpha02")
  206. constraints {
  207. implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.0")?.apply {
  208. because("kotlin-stdlib-jdk7 is now a part of kotlin-stdlib")
  209. }
  210. implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0")?.apply {
  211. because("kotlin-stdlib-jdk8 is now a part of kotlin-stdlib")
  212. }
  213. }
  214. }