build.gradle.kts 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. @file:Suppress("UnstableApiUsage")
  2. import org.mjdev.gradle.extensions.implementation
  3. import org.mjdev.gradle.plugin.MainAppPlugin.Companion.javaVersion
  4. import org.mjdev.gradle.plugin.MainAppPlugin.Companion.kotlinCompilerExtVersion
  5. import org.mjdev.gradle.plugin.MainAppPlugin.Companion.projectCompileSdk
  6. import org.mjdev.gradle.plugin.MainAppPlugin.Companion.projectMinSdk
  7. /*
  8. * Copyright (c) Milan Jurkulák 2023.
  9. * Contact:
  10. * e: mimoccc@gmail.com
  11. * e: mj@mjdev.org
  12. * w: https://mjdev.org
  13. */
  14. plugins {
  15. id("com.android.library")
  16. kotlin("android")
  17. id("com.google.dagger.hilt.android")
  18. id("dagger.hilt.android.plugin")
  19. kotlin("kapt")
  20. id("com.google.devtools.ksp")
  21. // id("org.jetbrains.dokka") version "1.8.10"
  22. }
  23. android {
  24. namespace = "org.mjdev.tvlib"
  25. compileSdk = projectCompileSdk
  26. defaultConfig {
  27. minSdk = projectMinSdk
  28. testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
  29. consumerProguardFiles("consumer-rules.pro")
  30. }
  31. buildTypes {
  32. debug {
  33. isMinifyEnabled = false
  34. proguardFiles(
  35. getDefaultProguardFile("proguard-android-optimize.txt"),
  36. "proguard-rules.pro"
  37. )
  38. buildConfigField(
  39. "Boolean",
  40. "RECOMPOSE_ENABLED",
  41. "false"
  42. )
  43. }
  44. release {
  45. isMinifyEnabled = false
  46. proguardFiles(
  47. getDefaultProguardFile("proguard-android-optimize.txt"),
  48. "proguard-rules.pro"
  49. )
  50. buildConfigField(
  51. "Boolean",
  52. "RECOMPOSE_ENABLED",
  53. "false"
  54. )
  55. }
  56. create("recomposing") {
  57. isMinifyEnabled = false
  58. proguardFiles(
  59. getDefaultProguardFile("proguard-android-optimize.txt"),
  60. "proguard-rules.pro"
  61. )
  62. buildConfigField(
  63. "Boolean",
  64. "RECOMPOSE_ENABLED",
  65. "true"
  66. )
  67. }
  68. }
  69. compileOptions {
  70. sourceCompatibility = javaVersion
  71. targetCompatibility = javaVersion
  72. }
  73. kotlinOptions {
  74. jvmTarget = javaVersion.toString()
  75. }
  76. buildFeatures {
  77. compose = true
  78. buildConfig = true
  79. }
  80. composeOptions {
  81. kotlinCompilerExtensionVersion = kotlinCompilerExtVersion
  82. }
  83. packaging {
  84. resources.excludes.apply {
  85. add("/META-INF/{AL2.0,LGPL2.1}")
  86. }
  87. }
  88. lint {
  89. checkReleaseBuilds = false
  90. }
  91. hilt {
  92. enableAggregatingTask = true
  93. }
  94. // tasks.dokkaGfm {
  95. // outputDirectory.set(File(projectDir, "../wiki/documentation"))
  96. // }
  97. }
  98. dependencies {
  99. // base libs
  100. implementation("androidx.core:core-ktx:1.12.0")
  101. implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3")
  102. // reflect / debug purposes only
  103. implementation("org.jetbrains.kotlin:kotlin-reflect:1.9.10")
  104. // window manager
  105. implementation("androidx.window:window:1.1.0")
  106. // compose base libs
  107. implementation(platform("androidx.compose:compose-bom:2023.09.01"))
  108. implementation("androidx.compose.ui:ui-tooling")
  109. implementation("androidx.activity:activity-compose:1.7.2")
  110. // more icons
  111. implementation("androidx.compose.material:material-icons-extended:1.5.1")
  112. // tv compose
  113. implementation("androidx.tv:tv-foundation:1.0.0-alpha09")
  114. implementation("androidx.tv:tv-material:1.0.0-alpha09")
  115. // view model
  116. implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.6.2")
  117. // navigation
  118. implementation("androidx.navigation:navigation-compose:2.7.3")
  119. // okhttp
  120. implementation(platform("com.squareup.okhttp3:okhttp-bom:5.0.0-alpha.11"))
  121. implementation("com.squareup.okhttp3:okhttp")
  122. implementation("com.squareup.okhttp3:logging-interceptor:5.0.0-alpha.11")
  123. // retrofit
  124. implementation("com.squareup.retrofit2:retrofit:2.9.0")
  125. implementation("com.squareup.retrofit2:converter-moshi:2.9.0")
  126. implementation("com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2")
  127. // moshi json
  128. implementation("com.squareup.moshi:moshi:1.15.0")
  129. implementation("com.squareup.retrofit2:converter-moshi:2.9.0")
  130. ksp("com.squareup.moshi:moshi-kotlin-codegen:1.15.0")
  131. // sandwich
  132. implementation("com.github.skydoves:sandwich:1.3.9")
  133. // image loading
  134. implementation("io.coil-kt:coil-base:2.4.0")
  135. implementation("io.coil-kt:coil-gif:2.4.0")
  136. implementation("io.coil-kt:coil-svg:2.4.0")
  137. implementation("io.coil-kt:coil-video:2.4.0")
  138. implementation("io.coil-kt:coil-compose:2.4.0")
  139. implementation("com.github.skydoves:landscapist-coil:2.2.9")
  140. // debug
  141. implementation("com.jakewharton.timber:timber:5.0.1")
  142. // dagger core
  143. implementation("com.google.dagger:dagger:2.48")
  144. implementation("androidx.compose.material3:material3:1.1.2")
  145. kapt("com.google.dagger:dagger-compiler:2.48")
  146. // dagger android
  147. implementation("com.google.dagger:dagger-android:2.48")
  148. implementation("com.google.dagger:dagger-android-support:2.48")
  149. kapt("com.google.dagger:dagger-android-processor:2.48")
  150. // dagger - hilt
  151. implementation("com.google.dagger:hilt-android:2.48")
  152. implementation("androidx.hilt:hilt-navigation-compose:1.1.0-alpha01")
  153. kapt("com.google.dagger:hilt-compiler:2.48")
  154. // encrypt data
  155. implementation("com.scottyab:aescrypt:0.0.1")
  156. // exoplayer
  157. implementation("androidx.media3:media3-exoplayer:1.1.1")
  158. implementation("androidx.media3:media3-exoplayer-dash:1.1.1")
  159. implementation("androidx.media3:media3-exoplayer-hls:1.1.1")
  160. implementation("androidx.media3:media3-exoplayer-rtsp:1.1.1")
  161. // implementation("androidx.media3:media3-exoplayer-ima:1.1.0")
  162. implementation("androidx.media3:media3-datasource-cronet:1.1.1")
  163. implementation("androidx.media3:media3-datasource-okhttp:1.1.1")
  164. implementation("androidx.media3:media3-datasource-rtmp:1.1.1")
  165. implementation("androidx.media3:media3-ui:1.1.1")
  166. // implementation("androidx.media3:media3-ui-leanback:1.1.0")
  167. implementation("androidx.media3:media3-session:1.1.1")
  168. implementation("androidx.media3:media3-extractor:1.1.1")
  169. implementation("androidx.media3:media3-cast:1.1.1")
  170. implementation("androidx.media3:media3-exoplayer-workmanager:1.1.1")
  171. implementation("androidx.media3:media3-transformer:1.1.1")
  172. implementation("androidx.media3:media3-database:1.1.1")
  173. implementation("androidx.media3:media3-decoder:1.1.1")
  174. implementation("androidx.media3:media3-datasource:1.1.1")
  175. implementation("androidx.media3:media3-common:1.1.1")
  176. // permission
  177. implementation("com.google.accompanist:accompanist-permissions:0.33.2-alpha")
  178. // for previews
  179. debugImplementation("androidx.customview:customview-poolingcontainer:1.0.0")
  180. // pallette
  181. implementation("androidx.palette:palette-ktx:1.0.0")
  182. // lottie
  183. implementation("com.airbnb.android:lottie-compose:6.1.0")
  184. // exif info
  185. implementation("androidx.exifinterface:exifinterface:1.3.6")
  186. // anr
  187. implementation("com.github.anrwatchdog:anrwatchdog:1.4.0")
  188. // jsoup
  189. implementation("org.jsoup:jsoup:1.16.1")
  190. // dm
  191. implementation("com.dailymotion.dailymotion-sdk-android:sdk:0.2.12")
  192. // yt
  193. // ...
  194. // constraints
  195. constraints {
  196. implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.0").apply {
  197. because("kotlin-stdlib-jdk7 is now a part of kotlin-stdlib")
  198. }
  199. implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0").apply {
  200. because("kotlin-stdlib-jdk8 is now a part of kotlin-stdlib")
  201. }
  202. }
  203. // testing
  204. testImplementation("junit:junit:4.13.2")
  205. androidTestImplementation("androidx.test.ext:junit:1.1.5")
  206. androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
  207. }