import java.util.Properties plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.android) alias(libs.plugins.kotlin.compose) alias(libs.plugins.kotlin.serialization) } // Read properties from local.properties val localProperties = Properties() val localPropertiesFile = rootProject.file("local.properties") if (localPropertiesFile.exists()) { localPropertiesFile.inputStream().use { localProperties.load(it) } } android { namespace = "net.tinsae.clocked" compileSdk = 36 //{ // version = release(36) //} defaultConfig { applicationId = "net.tinsae.clocked" minSdk = 24 targetSdk = 36 versionCode = 1 versionName = "1.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" // Expose Supabase keys to the app via BuildConfig buildConfigField("String", "SUPABASE_URL", "\"${localProperties.getProperty("supabase.url")}\"") buildConfigField("String", "SUPABASE_ANON_KEY", "\"${localProperties.getProperty("supabase.anon.key")}\"") } buildTypes { release { isMinifyEnabled = false proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } compileOptions { isCoreLibraryDesugaringEnabled = true sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 } kotlin { compilerOptions { jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_11) } } buildFeatures { compose = true buildConfig = true // Enable BuildConfig generation } } dependencies { coreLibraryDesugaring(libs.android.desugar.jdk.libs) implementation(libs.androidx.core.ktx) implementation(libs.androidx.lifecycle.runtime.ktx) implementation(libs.androidx.activity.compose) implementation(platform(libs.androidx.compose.bom)) implementation(libs.androidx.compose.ui) implementation(libs.androidx.compose.ui.graphics) implementation(libs.androidx.compose.ui.tooling.preview) implementation(libs.androidx.compose.material3) implementation(libs.androidx.compose.material.icons.extended) implementation(libs.androidx.compose.material3.adaptive.navigation.suite) implementation(libs.androidx.compose.material3.window.size.class1) implementation(libs.androidx.lifecycle.viewmodel.compose) implementation(libs.androidx.appcompat) // Supabase implementation(libs.kotlinx.serialization.json) implementation(libs.kotlinx.datetime) // --- SUPABASE DEPENDENCIES (Corrected) --- // 1. Implement the BOM using the platform() keyword. implementation(platform(libs.supabase.bom)) // 2. Implement the specific Supabase modules using the correct aliases. implementation(libs.supabase.auth) implementation(libs.supabase.postgrest) implementation(libs.ktor.client.android) testImplementation(libs.junit) androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.espresso.core) androidTestImplementation(platform(libs.androidx.compose.bom)) androidTestImplementation(libs.androidx.compose.ui.test.junit4) debugImplementation(libs.androidx.compose.ui.tooling) debugImplementation(libs.androidx.compose.ui.test.manifest) }