@file:Suppress("HardCodedStringLiteral") import java.text.SimpleDateFormat import java.util.Date import java.util.Locale plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.compose) alias(libs.plugins.hilt.android) id("kotlin-parcelize") id("org.jetbrains.kotlin.plugin.serialization") id("com.google.devtools.ksp") } android { namespace = "eu.gaudian.translator" compileSdk = 36 defaultConfig { applicationId = "eu.gaudian.translator" minSdk = 28 targetSdk = 36 versionCode = 23 versionName = "0.5.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } testOptions { execution = "ANDROIDX_TEST_ORCHESTRATOR" } compileOptions { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 } buildTypes { release { isMinifyEnabled = false proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) val buildTime = SimpleDateFormat("dd.MM.yyyy HH:mm", Locale.getDefault()).format(Date()) buildConfigField("String", "BUILD_TIME", "\"$buildTime\"") signingConfig = signingConfigs.getByName("debug") } debug { val buildTime = SimpleDateFormat("dd.MM.yyyy HH:mm", Locale.getDefault()).format(Date()) buildConfigField("String", "BUILD_TIME", "\"$buildTime\"") } } tasks.withType().configureEach { compilerOptions.freeCompilerArgs.addAll( "-opt-in=kotlin.time.ExperimentalTime", "-opt-in=androidx.compose.material3.ExperimentalMaterial3Api", "-opt-in=androidx.compose.ui.ExperimentalComposeUiApi" ) } buildFeatures { compose = true viewBinding = false dataBinding = false buildConfig = true } packaging { // This keeps your original resource exclusions resources { excludes += "/META-INF/{AL2.0,LGPL2.1}" excludes += "**/dump_syms.bin" } jniLibs { useLegacyPackaging = true } } configurations.all { exclude(group = "com.intellij", module = "annotations") } buildToolsVersion = "36.0.0" } dependencies { implementation(platform(libs.androidx.compose.bom)) // Core & UI implementation(libs.androidx.core.ktx) implementation(libs.material) implementation(libs.androidx.activity.compose) implementation(libs.androidx.core.splashscreen) implementation(libs.androidx.lifecycle.runtime.ktx) implementation(libs.androidx.lifecycle.viewmodel.compose) implementation(libs.androidx.lifecycle.viewmodel.ktx) implementation(libs.timber) // Compose implementation(libs.androidx.ui) implementation(libs.androidx.ui.graphics) implementation(libs.androidx.ui.tooling.preview) implementation(libs.androidx.foundation) implementation(libs.androidx.foundation.layout) implementation(libs.androidx.animation) implementation(libs.androidx.animation.core) implementation(libs.androidx.material3) implementation(libs.androidx.material.icons.extended) implementation(libs.reorderable) // Navigation implementation(libs.androidx.navigation.compose) // Data implementation(libs.androidx.datastore.preferences) implementation(libs.androidx.paging.runtime.ktx) implementation(libs.kotlinx.coroutines.core) implementation(libs.kotlinx.coroutines.android) implementation(libs.kotlinx.datetime) implementation(libs.kotlinx.serialization.json) // Room Database implementation(libs.androidx.room.runtime) // ADDED: Explicitly add runtime implementation(libs.androidx.room.ktx) implementation(libs.core.ktx) ksp(libs.room.compiler) // CHANGED: Use ksp instead of implementation // Networking implementation(libs.retrofit) implementation(libs.converter.gson) implementation(libs.logging.interceptor) implementation(libs.androidx.annotation) implementation(libs.kotlin.stdlib) implementation(libs.jsoup) implementation(libs.core) // Hilt implementation(libs.hilt.android) implementation(libs.hilt.navigation.compose) ksp(libs.hilt.android.compiler) // Debug and Test debugImplementation(libs.ui.tooling) debugImplementation(libs.ui.test.manifest) testImplementation(libs.junit) testImplementation(libs.kotlinx.coroutines.test) testImplementation(libs.androidx.core.testing) testImplementation(libs.hilt.android.testing) testAnnotationProcessor(libs.hilt.android.compiler) testImplementation(libs.mockito.core) testImplementation(libs.mockito.kotlin) testImplementation(libs.mockk) testImplementation(libs.truth) testImplementation(libs.androidx.runner) androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.espresso.core) androidTestImplementation(platform(libs.androidx.compose.bom)) androidTestImplementation(libs.androidx.ui.test.junit4) androidTestImplementation(libs.androidx.navigation.testing) //noinspection UseTomlInstead implementation("com.pierfrancescosoffritti.androidyoutubeplayer:core:13.0.0") // Markdown rendering implementation(libs.compose.markdown) // Compression testImplementation (libs.zstd.jni) implementation(libs.zstd.jni.get().toString() + "@aar") }