build.gradle.kts 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  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.plugin.MainAppPlugin.Companion.javaVersion
  11. import org.mjdev.gradle.plugin.MainAppPlugin.Companion.kotlinCompilerExtVersion
  12. import org.mjdev.gradle.plugin.MainAppPlugin.Companion.loadKeyStoreProperties
  13. import org.mjdev.gradle.plugin.MainAppPlugin.Companion.versionCode
  14. import org.mjdev.gradle.plugin.MainAppPlugin.Companion.versionName
  15. @Suppress("PropertyName")
  16. val CONFIG_KEYSTORE_PROPERTIES_FILE = "config/keystore.properties"
  17. @Suppress("PropertyName")
  18. val SIGNING_CONFIG_NAME = "Any"
  19. plugins {
  20. id("com.android.application")
  21. kotlin("android")
  22. kotlin("kapt")
  23. id("kotlin-parcelize")
  24. id("com.google.dagger.hilt.android")
  25. id("dagger.hilt.android.plugin")
  26. id("org.jetbrains.dokka") version "1.8.10"
  27. id("MainAppPlugin")
  28. }
  29. android {
  30. namespace = "org.mjdev.tvapp"
  31. compileSdk = 33
  32. signingConfigs {
  33. loadKeyStoreProperties(
  34. CONFIG_KEYSTORE_PROPERTIES_FILE
  35. ) { aliasKey, passwordKey, fileStore, passwordStore ->
  36. create(SIGNING_CONFIG_NAME) {
  37. keyAlias = aliasKey
  38. keyPassword = passwordKey
  39. storeFile = fileStore
  40. storePassword = passwordStore
  41. }
  42. }
  43. }
  44. defaultConfig {
  45. applicationId = "org.mjdev.tvapp"
  46. minSdk = 21
  47. targetSdk = 33
  48. versionCode = project.versionCode
  49. versionName = project.versionName
  50. signingConfig = signingConfigs[SIGNING_CONFIG_NAME]
  51. }
  52. buildTypes {
  53. debug {
  54. applicationIdSuffix = ".debug"
  55. isDebuggable = true
  56. isMinifyEnabled = false
  57. proguardFiles(
  58. getDefaultProguardFile("proguard-android-optimize.txt"),
  59. "proguard-rules.pro"
  60. )
  61. }
  62. release {
  63. applicationIdSuffix = ""
  64. isDebuggable = true
  65. isMinifyEnabled = false
  66. proguardFiles(
  67. getDefaultProguardFile("proguard-android-optimize.txt"),
  68. "proguard-rules.pro"
  69. )
  70. }
  71. }
  72. buildFeatures {
  73. compose = true
  74. buildConfig = true
  75. }
  76. compileOptions {
  77. sourceCompatibility = javaVersion
  78. targetCompatibility = javaVersion
  79. }
  80. kotlinOptions {
  81. jvmTarget = javaVersion.toString()
  82. }
  83. composeOptions {
  84. kotlinCompilerExtensionVersion = kotlinCompilerExtVersion
  85. }
  86. packaging {
  87. resources.excludes.add("/META-INF/{AL2.0,LGPL2.1}")
  88. }
  89. lint {
  90. checkReleaseBuilds = false
  91. }
  92. tasks.dokkaGfm {
  93. outputDirectory.set(File(projectDir, "../wiki/documentation"))
  94. }
  95. }
  96. dependencies {
  97. // base libs
  98. implementation("androidx.core:core-ktx:1.11.0-beta02")
  99. // reflect / debug purposes only
  100. implementation(kotlin("reflect", "1.8.21"))
  101. // compose base libs
  102. implementation(
  103. platform("androidx.compose:compose-bom:2023.06.01")
  104. )
  105. implementation("androidx.compose.ui:ui-tooling")
  106. implementation("androidx.activity:activity-compose:1.7.2")
  107. // more icons
  108. implementation("androidx.compose.material:material-icons-extended")
  109. // tv compose
  110. implementation("androidx.tv:tv-foundation:1.0.0-alpha07")
  111. implementation("androidx.tv:tv-material:1.0.0-alpha07")
  112. // view model
  113. implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.6.1")
  114. // navigation
  115. implementation("androidx.navigation:navigation-compose:2.7.0-beta01")
  116. // async image loading
  117. implementation("io.coil-kt:coil-compose:2.4.0")
  118. // constraint layout
  119. implementation("androidx.constraintlayout:constraintlayout-compose:1.0.1")
  120. // debug
  121. implementation("com.jakewharton.timber:timber:5.0.1")
  122. // dagger core
  123. implementation("com.google.dagger:dagger:2.46.1")
  124. kapt("com.google.dagger:dagger-compiler:2.46.1")
  125. // dagger android
  126. implementation("com.google.dagger:dagger-android:2.46.1")
  127. implementation("com.google.dagger:dagger-android-support:2.46.1")
  128. kapt("com.google.dagger:dagger-android-processor:2.46.1")
  129. // dagger - hilt
  130. implementation("com.google.dagger:hilt-android:2.46.1")
  131. implementation("androidx.hilt:hilt-navigation-compose:1.1.0-alpha01")
  132. kapt("com.google.dagger:hilt-compiler:2.46.1")
  133. // exoplayer
  134. implementation("androidx.media3:media3-exoplayer:1.0.2")
  135. implementation("androidx.media3:media3-exoplayer-dash:1.0.2")
  136. implementation("androidx.media3:media3-exoplayer-hls:1.0.2")
  137. implementation("androidx.media3:media3-exoplayer-rtsp:1.0.2")
  138. implementation("androidx.media3:media3-exoplayer-ima:1.0.2")
  139. implementation("androidx.media3:media3-datasource-cronet:1.0.2")
  140. implementation("androidx.media3:media3-datasource-okhttp:1.0.2")
  141. implementation("androidx.media3:media3-datasource-rtmp:1.0.2")
  142. implementation("androidx.media3:media3-ui:1.0.2")
  143. implementation("androidx.media3:media3-ui-leanback:1.0.2")
  144. implementation("androidx.media3:media3-session:1.0.2")
  145. implementation("androidx.media3:media3-extractor:1.0.2")
  146. implementation("androidx.media3:media3-cast:1.0.2")
  147. implementation("androidx.media3:media3-exoplayer-workmanager:1.0.2")
  148. implementation("androidx.media3:media3-transformer:1.0.2")
  149. implementation("androidx.media3:media3-database:1.0.2")
  150. implementation("androidx.media3:media3-decoder:1.0.2")
  151. implementation("androidx.media3:media3-datasource:1.0.2")
  152. implementation("androidx.media3:media3-common:1.0.2")
  153. constraints {
  154. implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.0")?.apply {
  155. because("kotlin-stdlib-jdk7 is now a part of kotlin-stdlib")
  156. }
  157. implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0")?.apply {
  158. because("kotlin-stdlib-jdk8 is now a part of kotlin-stdlib")
  159. }
  160. }
  161. }