plugins { id("com.android.application") id("org.jetbrains.kotlin.android") id("org.jetbrains.kotlin.plugin.compose") } android { namespace = "dev.castarr.tv" compileSdk = 35 defaultConfig { applicationId = "dev.castarr.tv" minSdk = 26 targetSdk = 35 versionCode = 21 versionName = "0.8.5" } // Release signing from environment (see ~/.keys/castarr-release.env on the // build host); unsigned release build when unset. val storeFileEnv = System.getenv("CASTARR_STORE_FILE") if (storeFileEnv != null) { signingConfigs { create("release") { storeFile = file(storeFileEnv) storePassword = System.getenv("CASTARR_STORE_PASSWORD") keyAlias = System.getenv("CASTARR_KEY_ALIAS") keyPassword = System.getenv("CASTARR_STORE_PASSWORD") } } } buildTypes { release { isMinifyEnabled = true proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro") if (storeFileEnv != null) { signingConfig = signingConfigs.getByName("release") } } } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = "17" allWarningsAsErrors = true } buildFeatures { compose = true buildConfig = true } lint { // Media3's UI classes are @UnstableApi; the opt-in lint check would // otherwise fail release builds. disable += "UnsafeOptInUsageError" } } dependencies { implementation("androidx.core:core-ktx:1.15.0") implementation(platform("androidx.compose:compose-bom:2024.10.01")) implementation("androidx.activity:activity-compose:1.9.3") implementation("androidx.compose.ui:ui") implementation("androidx.compose.foundation:foundation") implementation("androidx.tv:tv-material:1.0.0") implementation("androidx.compose.material3:material3") implementation("androidx.lifecycle:lifecycle-runtime-compose:2.8.7") implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.8.7") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0") implementation("androidx.media3:media3-exoplayer:1.4.1") implementation("androidx.media3:media3-exoplayer-hls:1.4.1") implementation("androidx.media3:media3-ui:1.4.1") implementation("androidx.media3:media3-session:1.4.1") implementation("org.nanohttpd:nanohttpd:2.3.1") implementation("org.nanohttpd:nanohttpd-websocket:2.3.1") implementation("com.google.zxing:core:3.5.3") implementation("io.coil-kt:coil-compose:2.7.0") } // Full JDK for javac via toolchain (host may only have a JRE); resolved by // the foojay convention plugin in settings. kotlin { jvmToolchain(17) }