| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291 |
- /*
- * Copyright (c) Milan Jurkulák 2023.
- * Contact:
- * e: mimoccc@gmail.com
- * e: mj@mjdev.org
- * w: https://mjdev.org
- */
- import org.mjdev.gradle.extensions.implementation
- import org.mjdev.gradle.extensions.kapt
- import org.mjdev.gradle.plugin.MainAppPlugin.Companion.javaVersion
- import org.mjdev.gradle.plugin.MainAppPlugin.Companion.kotlinCompilerExtVersion
- import org.mjdev.gradle.plugin.MainAppPlugin.Companion.loadKeyStoreProperties
- import org.mjdev.gradle.plugin.MainAppPlugin.Companion.projectCompileSdk
- import org.mjdev.gradle.plugin.MainAppPlugin.Companion.projectMinSdk
- import org.mjdev.gradle.plugin.MainAppPlugin.Companion.versionCode
- import org.mjdev.gradle.plugin.MainAppPlugin.Companion.versionName
- @Suppress("PropertyName")
- val CONFIG_KEYSTORE_PROPERTIES_FILE = "config/keystore.properties"
- @Suppress("PropertyName")
- val SIGNING_CONFIG_NAME = "Any"
- plugins {
- id("com.android.application")
- kotlin("android")
- id("kotlin-parcelize")
- id("com.google.dagger.hilt.android")
- id("dagger.hilt.android.plugin")
- id("io.objectbox")
- id("MainAppPlugin")
- kotlin("kapt")
- id("com.google.devtools.ksp")
- // id("org.jetbrains.dokka") version "1.8.10"
- // id ("app.cash.paparazzi") version "1.3.1"
- }
- android {
- namespace = "org.mjdev.tvapp"
- compileSdk = projectCompileSdk
- signingConfigs {
- loadKeyStoreProperties(
- CONFIG_KEYSTORE_PROPERTIES_FILE
- ) { aliasKey, passwordKey, fileStore, passwordStore ->
- create(SIGNING_CONFIG_NAME) {
- keyAlias = aliasKey
- keyPassword = passwordKey
- storeFile = fileStore
- storePassword = passwordStore
- }
- }
- }
- defaultConfig {
- applicationId = "org.mjdev.tvapp"
- minSdk = projectMinSdk
- targetSdk = projectCompileSdk
- versionCode = project.versionCode
- versionName = project.versionName
- signingConfig = signingConfigs[SIGNING_CONFIG_NAME]
- buildConfigField("String", "IPTV_API_URL", "\"https://iptv-org.github.io/api/\"")
- buildConfigField("String", "GITHUB_USER", "\"mimoccc\"")
- buildConfigField("String", "GITHUB_REPOSITORY", "\"tvapp\"")
- manifestPlaceholders.apply {
- put("auth0Domain", "@string/com_auth0_domain")
- put("auth0Scheme", "demo")
- }
- }
- buildTypes {
- debug {
- applicationIdSuffix = ".debug"
- isDebuggable = true
- isMinifyEnabled = false
- proguardFiles(
- getDefaultProguardFile("proguard-android-optimize.txt"),
- "proguard-rules.pro"
- )
- buildConfigField(
- "String",
- "SYNC_AUTH",
- "\"${defaultConfig.applicationId}${applicationIdSuffix}.sync\""
- )
- resValue(
- "string",
- "sync_auth",
- "${defaultConfig.applicationId}${applicationIdSuffix}.sync"
- )
- }
- release {
- applicationIdSuffix = ""
- isDebuggable = false
- isMinifyEnabled = false // todo
- proguardFiles(
- getDefaultProguardFile("proguard-android-optimize.txt"),
- "proguard-rules.pro"
- )
- buildConfigField(
- "String",
- "SYNC_AUTH",
- "\"${defaultConfig.applicationId}${applicationIdSuffix}.sync\""
- )
- resValue(
- "string",
- "sync_auth",
- "${defaultConfig.applicationId}${applicationIdSuffix}.sync"
- )
- }
- create("recomposing") {
- applicationIdSuffix = ".rcmps"
- isDebuggable = true
- isMinifyEnabled = false
- proguardFiles(
- getDefaultProguardFile("proguard-android-optimize.txt"),
- "proguard-rules.pro"
- )
- buildConfigField(
- "String",
- "SYNC_AUTH",
- "\"${defaultConfig.applicationId}${applicationIdSuffix}.sync\""
- )
- resValue(
- "string",
- "sync_auth",
- "${defaultConfig.applicationId}${applicationIdSuffix}.sync"
- )
- multiDexEnabled = true
- matchingFallbacks += listOf("debug")
- }
- }
- buildFeatures {
- compose = true
- buildConfig = true
- }
- compileOptions {
- sourceCompatibility = javaVersion
- targetCompatibility = javaVersion
- }
- kotlinOptions {
- jvmTarget = javaVersion.toString()
- }
- composeOptions {
- kotlinCompilerExtensionVersion = kotlinCompilerExtVersion
- }
- packaging {
- resources.excludes.apply {
- add("/META-INF/{AL2.0,LGPL2.1}")
- add("/META-INF/DEPENDENCIES")
- add("/mozilla/public-suffix-list.txt")
- }
- }
- lint {
- checkReleaseBuilds = false
- }
- hilt {
- enableAggregatingTask = true
- }
- // subprojects {
- // apply(plugin = "org.jetbrains.dokka")
- // }
- // tasks.dokkaGfm {
- // outputDirectory.set(File(projectDir, "../wiki/documentation"))
- // }
- }
- dependencies {
- // todo remove
- implementation("org.jetbrains.kotlin:kotlin-reflect:1.9.21")
- // startups
- implementation("androidx.startup:startup-runtime:1.1.1")
- // tv library by mjde milan jurkulak
- implementation(project(mapOf("path" to ":tvlib")))
- // base libs
- implementation("androidx.core:core-ktx:1.12.0")
- implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3")
- // compose base libs
- implementation(platform("androidx.compose:compose-bom:2023.10.01"))
- implementation("androidx.compose.ui:ui-tooling")
- implementation("androidx.activity:activity-compose:1.8.1")
- // more icons
- implementation("androidx.compose.material:material-icons-extended:1.5.4")
- // tv compose
- implementation("androidx.tv:tv-foundation:1.0.0-alpha10")
- implementation("androidx.tv:tv-material:1.0.0-alpha10")
- // dagger - hilt
- implementation("com.google.dagger:dagger-android:2.49")
- implementation("com.google.dagger:dagger-android-support:2.49")
- implementation("com.google.dagger:dagger:2.49")
- implementation("com.google.dagger:hilt-android:2.49")
- implementation("androidx.hilt:hilt-navigation-compose:1.1.0")
- // moshi json
- implementation("com.squareup.moshi:moshi:1.15.0")
- implementation("com.squareup.retrofit2:converter-moshi:2.9.0")
- // okhttp
- implementation(platform("com.squareup.okhttp3:okhttp-bom:5.0.0-alpha.11"))
- implementation("com.squareup.okhttp3:okhttp")
- implementation("com.squareup.okhttp3:logging-interceptor:5.0.0-alpha.11")
- // debug
- implementation("com.jakewharton.timber:timber:5.0.1")
- implementation("com.android.volley:volley:1.2.1")
- // kapt
- kapt("com.google.dagger:dagger-compiler:2.49")
- kapt("com.google.dagger:dagger-android-processor:2.49")
- kapt("com.google.dagger:hilt-compiler:2.49")
- ksp("com.squareup.moshi:moshi-kotlin-codegen:1.15.0")
- // view model
- implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.6.2")
- // navigation
- implementation("androidx.navigation:navigation-compose:2.7.5")
- // retrofit
- implementation("com.squareup.retrofit2:retrofit:2.9.0")
- implementation("com.squareup.retrofit2:converter-moshi:2.9.0")
- implementation("com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2")
- // sandwich
- implementation("com.github.skydoves:sandwich:1.3.9")
- // encrypt data
- implementation("com.scottyab:aescrypt:0.0.1")
- // permission
- implementation("com.google.accompanist:accompanist-permissions:0.33.2-alpha")
- // previews
- debugImplementation("androidx.customview:customview-poolingcontainer:1.0.0")
- // lottie
- implementation("com.airbnb.android:lottie-compose:6.2.0")
- // oauth
- implementation("com.auth0.android:auth0:2.10.2")
- implementation("com.auth0.android:jwtdecode:2.0.2")
- // widgets
- implementation("androidx.glance:glance-appwidget:1.0.0")
- implementation("androidx.glance:glance-material:1.0.0")
- implementation("androidx.glance:glance-material3:1.0.0")
- // fix duplicates
- implementation("androidx.work:work-runtime-ktx:2.9.0")
- // exoplayer
- implementation("androidx.media3:media3-exoplayer:1.2.0")
- implementation("androidx.media3:media3-exoplayer-dash:1.2.0")
- implementation("androidx.media3:media3-exoplayer-hls:1.2.0")
- implementation("androidx.media3:media3-exoplayer-rtsp:1.2.0")
- implementation("androidx.media3:media3-datasource-cronet:1.2.0")
- implementation("androidx.media3:media3-datasource-okhttp:1.2.0")
- implementation("androidx.media3:media3-datasource-rtmp:1.2.0")
- implementation("androidx.media3:media3-ui:1.2.0")
- implementation("androidx.media3:media3-session:1.2.0")
- implementation("androidx.media3:media3-extractor:1.2.0")
- implementation("androidx.media3:media3-cast:1.2.0")
- implementation("androidx.media3:media3-exoplayer-workmanager:1.2.0")
- implementation("androidx.media3:media3-transformer:1.2.0")
- implementation("androidx.media3:media3-database:1.2.0")
- implementation("androidx.media3:media3-decoder:1.2.0")
- implementation("androidx.media3:media3-datasource:1.2.0")
- implementation("androidx.media3:media3-common:1.2.0")
- // implementation("net.engawapg.lib:zoomable:1.5.2")
- // libs mismatch
- constraints {
- implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.0").apply {
- because("kotlin-stdlib-jdk7 is now a part of kotlin-stdlib")
- }
- implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0").apply {
- because("kotlin-stdlib-jdk8 is now a part of kotlin-stdlib")
- }
- }
- // fix duplicates
- configurations {
- all {
- resolutionStrategy {
- force("androidx.work:work-runtime-ktx:2.8.1")
- }
- }
- }
- }
|