import org.jetbrains.kotlin.gradle.dsl.JvmTarget import java.util.Properties import java.io.FileInputStream plugins { id("com.android.application") kotlin("android") kotlin("kapt") id("com.google.devtools.ksp") version "2.2.0-2.0.2" alias(libs.plugins.compose.compiler) } val keystoreProperties = Properties() val keystorePropertiesFile = rootProject.file("keystore.properties") if (keystorePropertiesFile.exists()) { keystoreProperties.load(FileInputStream(keystorePropertiesFile)) } android { namespace = "com.illusionware.npsbrowser" compileSdk = 36 defaultConfig { applicationId = "com.illusionware.npsbrowser" // TODO: Network Security Config needs 24+ API level, don't know if I want to raise the min // just for that minSdk = 23 targetSdk = 36 versionCode = 1 versionName = "0.1.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { useSupportLibrary = true } ksp { arg("room.schemaLocation", "$projectDir/schemas") } } composeOptions { kotlinCompilerExtensionVersion = "1.5.2" } buildFeatures { compose = true aidl = false renderScript = false shaders = false } signingConfigs { create("release") { keyAlias = keystoreProperties["keyAlias"] as String? keyPassword = keystoreProperties["keyPassword"] as String? storeFile = keystoreProperties["storeFile"]?.let { file(it) } storePassword = keystoreProperties["storePassword"] as String? } } buildTypes { named("release") { signingConfig = signingConfigs.getByName("release") isMinifyEnabled = true isShrinkResources = true proguardFiles("proguard-android-optimize.txt", "proguard-rules.pro") } } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } buildToolsVersion = "36.0.0" kotlin { compilerOptions { jvmTarget = JvmTarget.JVM_17 } } } repositories { google() mavenCentral() } dependencies { implementation(libs.androidx.lifecycle.runtime.ktx) implementation(libs.androidx.lifecycle.runtime.compose) implementation(libs.androidx.activity.compose) implementation(libs.androidx.ui) implementation(libs.androidx.ui.graphics) implementation(libs.androidx.core.ktx) // Jetpack Compose implementation(platform(libs.androidx.compose.bom)) // Room database implementation(libs.androidx.room.runtime) // To use Kotlin Symbol Processing (KSP) ksp(libs.androidx.room.compiler) // optional - Kotlin Extensions and Coroutines support for Room implementation(libs.androidx.room.ktx) // Material 3 implementation(libs.androidx.material3) implementation(libs.androidx.material.icons.extended) // Android Studio Preview support implementation(libs.androidx.ui.tooling.preview) debugImplementation(libs.androidx.ui.tooling) // Preferences DataStore (alternative to SharedPreferences) implementation(libs.androidx.datastore.preferences) implementation(libs.androidx.core.splashscreen) implementation(libs.androidx.navigation.compose) implementation(libs.coil) implementation(libs.coil.compose) implementation(libs.rxjava) implementation(libs.okio) implementation(libs.flowreactivenetwork) implementation(libs.kotlin.csv) implementation(libs.material) }