/* * Copyright 2026 MagicalBits * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { alias(libs.plugins.android.application) alias(libs.plugins.compose) // necessary for using T.serializer() on a data class alias(libs.plugins.kotlin.serialization) } android { compileSdk = libs.versions.compileSdk.get().toInt() namespace = "xyz.magicalbits.smsremote" defaultConfig { applicationId = "xyz.magicalbits.smsremote" minSdk = libs.versions.minSdk.get().toInt() targetSdk = libs.versions.targetSdk.get().toInt() versionCode = 1 versionName = "1.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true } signingConfigs { // Important: change the keystore for a production deployment val userKeystore = File(System.getProperty("user.home"), ".android/debug.keystore") val localKeystore = rootProject.file("debug_2.keystore") val hasKeyInfo = userKeystore.exists() create("release") { storeFile = if (hasKeyInfo) userKeystore else localKeystore storePassword = if (hasKeyInfo) "android" else System.getenv("compose_store_password") keyAlias = if (hasKeyInfo) "androiddebugkey" else System.getenv("compose_key_alias") keyPassword = if (hasKeyInfo) "android" else System.getenv("compose_key_password") } } buildTypes { getByName("debug") { } getByName("release") { isMinifyEnabled = true signingConfig = signingConfigs.getByName("release") proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro", ) } } kotlin { compilerOptions { jvmTarget = JvmTarget.fromTarget("17") } } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } buildFeatures { compose = true viewBinding = true } packaging.resources { // Multiple dependency bring these files in. Exclude them to enable // our test APK to build (has no effect on our AARs) excludes += "/META-INF/AL2.0" excludes += "/META-INF/LGPL2.1" } } dependencies { val composeBom = platform(libs.androidx.compose.bom) implementation(composeBom) androidTestImplementation(composeBom) implementation(libs.androidx.glance.appwidget) implementation(libs.androidx.glance.material3) implementation(libs.kotlin.stdlib) implementation(libs.kotlinx.coroutines.android) implementation(libs.kotlinx.serialization.json) implementation(libs.androidx.activity.compose) implementation(libs.androidx.core.ktx) implementation(libs.androidx.appcompat) implementation(libs.androidx.compose.runtime.livedata) implementation(libs.androidx.lifecycle.viewModelCompose) implementation(libs.androidx.lifecycle.runtime.compose) implementation(libs.androidx.navigation.fragment) implementation(libs.androidx.navigation.ui.ktx) implementation(libs.androidx.compose.foundation.layout) implementation(libs.androidx.compose.material3) implementation(libs.androidx.compose.ui.tooling.preview) debugImplementation(libs.androidx.compose.ui.tooling) implementation(libs.androidx.compose.ui.util) implementation(libs.androidx.compose.ui.viewbinding) implementation(libs.androidx.compose.ui.googlefonts) implementation(libs.ktor.client.auth) implementation(libs.ktor.client.core) implementation(libs.ktor.client.cio) debugImplementation(libs.androidx.compose.ui.test.manifest) androidTestImplementation(libs.junit) androidTestImplementation(libs.androidx.test.core) androidTestImplementation(libs.androidx.test.runner) androidTestImplementation(libs.androidx.test.espresso.core) androidTestImplementation(libs.androidx.test.rules) androidTestImplementation(libs.androidx.test.ext.junit) androidTestImplementation(libs.kotlinx.coroutines.test) androidTestImplementation(libs.androidx.compose.ui.test.junit4) }