Files
raman/app/build.gradle.kts
2026-02-28 12:45:29 +09:00

223 lines
7.1 KiB
Kotlin

/*
* 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
*
* http://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.ksp)
alias(libs.plugins.hilt)
alias(libs.plugins.compose)
}
android {
compileSdk = libs.versions.compileSdk.get().toInt()
namespace = "com.laseroptek.raman"
defaultConfig {
applicationId = "com.laseroptek.raman"
versionCode = 173
versionName = "1.7.3"
minSdk = libs.versions.minSdk.get().toInt()
maxSdk = libs.versions.maxSdk.get().toInt()
//noinspection ExpiredTargetSdkVersion
targetSdk = libs.versions.targetSdk.get().toInt()
vectorDrawables.useSupportLibrary = true
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
ndk {
abiFilters += "arm64-v8a"
}
}
signingConfigs {
// Important: change the keystore for a production deployment
//val userKeystore = File(System.getProperty("user.home"), ".android/debug.keystore")
val localKeystore = rootProject.file("keystore/platform.keystore")
//val hasKeyInfo = userKeystore.exists()
getByName("debug") {
storeFile = localKeystore
storePassword = "123456"
keyAlias = "platform"
keyPassword = "123456"
}
create("release") {
storeFile = localKeystore
storePassword = "123456"
keyAlias = "platform"
keyPassword = "123456"
}
}
buildTypes {
getByName("debug") {
isMinifyEnabled = false
isDebuggable = true
signingConfig = signingConfigs.getByName("debug")
}
getByName("release") {
isMinifyEnabled = false // default is true but wait too much build time
isDebuggable = false
signingConfig = signingConfigs.getByName("release")
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro")
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
buildFeatures {
compose = true
buildConfig = true
}
externalNativeBuild {
cmake {
path = file("src/main/cpp/CMakeLists.txt")
version = "3.22.1"
}
}
packaging {
resources {
excludes += "/META-INF/AL2.0"
excludes += "/META-INF/LGPL2.1"
}
jniLibs {
useLegacyPackaging = false
}
}
ndkVersion = "27.0.12077973"
lint {
disable.add("NullSafeMutableLiveData")
}
}
kotlin {
jvmToolchain(17)
compilerOptions {
freeCompilerArgs.add("-Xcontext-parameters")
}
}
dependencies {
// Kotlin and Coroutines
implementation(libs.kotlin.stdlib)
implementation(libs.kotlinx.coroutines.android)
// Dependency injection
implementation(libs.androidx.hilt.navigation.compose)
implementation(libs.hilt.android)
ksp(libs.hilt.compiler)
ksp(libs.hilt.android.compiler)
// Database
implementation(libs.androidx.room.runtime)
implementation(libs.androidx.room.ktx)
ksp(libs.androidx.room.compiler)
// Logging
implementation(libs.timber)
// Compose
val composeBom = platform(libs.androidx.compose.bom)
implementation(composeBom)
androidTestImplementation(composeBom)
// splash
implementation(libs.androidx.core.splashscreen)
// reflection
implementation(kotlin("reflect"))
//lottie
implementation(libs.lottie.compose)
implementation(libs.snapper)
implementation(libs.androidx.compose.animation)
implementation(libs.androidx.compose.foundation.layout)
implementation(libs.androidx.compose.material.iconsExtended)
// Material Android 12 and above.
implementation(libs.androidx.compose.material3)
implementation(libs.androidx.compose.materialWindow)
implementation(libs.androidx.compose.runtime)
// Compose BOM
implementation(platform(libs.androidx.compose.bom.v20251001))
// Add this line
implementation(libs.androidx.foundation)
implementation(libs.androidx.compose.ui)
implementation(libs.androidx.compose.ui.tooling.preview)
implementation(libs.androidx.constraintlayout.compose)
implementation(libs.androidx.activity.compose)
implementation(libs.accompanist.swiperefresh)
implementation(libs.androidx.appcompat)
implementation(libs.androidx.activity.ktx)
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.ui.graphics)
implementation(libs.androidx.security.crypto.ktx)
implementation(libs.androidx.navigation.compose)
implementation(libs.androidx.window)
implementation(libs.androidx.localbroadcastmanager)
implementation(libs.androidx.glance)
implementation(libs.androidx.glance.appwidget)
implementation(libs.androidx.glance.material3)
implementation(libs.androidx.lifecycle.viewmodel.ktx)
implementation(libs.androidx.lifecycle.viewmodel.savedstate)
implementation(libs.androidx.lifecycle.livedata.ktx)
implementation(libs.androidx.lifecycle.viewModelCompose)
implementation(libs.androidx.lifecycle.runtime.compose)
implementation(libs.snapper)
implementation(libs.gson)
// json binary serialization (completely avoids the "double serialization" problem because there's only one serialization step.)
implementation(libs.kotlinx.serialization.json)
implementation("org.jetbrains.kotlinx:kotlinx-serialization-protobuf:1.6.3")
// repeatOnLifecycle
implementation(libs.lifecycle.runtime.ktx.v262)
debugImplementation(libs.androidx.compose.ui.test.manifest)
debugImplementation(libs.androidx.compose.ui.tooling)
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)
androidTestImplementation(libs.androidx.compose.ui.test.junit4)
//implementation(libs.accompanist.systemuicontroller)
//accompanist System UI Controller (immerssive mode)
// LockView
//implementation(libs.androidx.constraintlayout.compose)
// Wheel Picker
//implementation(libs.kmp.date.time.picker)
}