/* * Copyright 2020 The Android Open Source Project * * 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. */ plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.android) alias(libs.plugins.compose) } android { compileSdk = libs.versions.compileSdk.get().toInt() namespace = "com.example.compose.jetchat" defaultConfig { applicationId = "com.example.compose.jetchat" 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") } } kotlinOptions { jvmTarget = "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.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.material.iconsExtended) 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) 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) }