1
0
mirror of https://github.com/oliexdev/openScale.git synced 2025-08-11 03:04:25 +02:00
Files
openscale/android_app/app/build.gradle.kts
2025-08-09 21:01:13 +02:00

183 lines
6.8 KiB
Plaintext

import java.io.FileInputStream
import java.io.FileNotFoundException
import java.util.Properties
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
id("kotlin-kapt")
}
android {
namespace = "com.health.openscale"
compileSdk = 36
defaultConfig {
applicationId = "com.health.openscale"
minSdk = 31
targetSdk = 36
versionCode = 67
versionName = "3.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
manifestPlaceholders["appName"] = "openScale"
manifestPlaceholders["appIcon"] = "@mipmap/ic_launcher"
manifestPlaceholders["appRoundIcon"] = "@mipmap/ic_launcher_round"
}
signingConfigs {
create("release") {
val keystorePropertiesFile = rootProject.file("../../openScale.keystore")
val keystoreProperties = Properties()
var propertiesLoaded : Boolean
try {
FileInputStream(keystorePropertiesFile).use { fis ->
keystoreProperties.load(fis)
}
propertiesLoaded = true
} catch (e: FileNotFoundException) {
project.logger.warn("Keystore properties file not found: ${keystorePropertiesFile.absolutePath}. Release signing might fail if not configured via environment variables.")
propertiesLoaded = false
}
if (propertiesLoaded && keystoreProperties.containsKey("releaseKeyStore")) {
storeFile = file(rootProject.projectDir.canonicalPath + "/" + keystoreProperties.getProperty("releaseKeyStore"))
keyAlias = keystoreProperties.getProperty("releaseKeyAlias")
keyPassword = keystoreProperties.getProperty("releaseKeyPassword")
storePassword = keystoreProperties.getProperty("releaseStorePassword")
} else {
project.logger.warn("Release signing information not fully loaded from properties. Ensure it's set via environment variables or the properties file is correct.")
}
}
create("oss") {
val keystoreOSSPropertiesFile = rootProject.file("../../openScale_oss.keystore")
val keystoreOSSProperties = Properties()
var propertiesLoaded : Boolean
try {
FileInputStream(keystoreOSSPropertiesFile).use { fis ->
keystoreOSSProperties.load(fis)
}
propertiesLoaded = true
} catch (e: FileNotFoundException) {
project.logger.warn("OSS Keystore properties file not found: ${keystoreOSSPropertiesFile.absolutePath}. OSS signing might fail if not configured via environment variables.")
propertiesLoaded = false
}
if (propertiesLoaded && keystoreOSSProperties.containsKey("releaseKeyStore")) {
storeFile = file(rootProject.projectDir.canonicalPath + "/" + keystoreOSSProperties.getProperty("releaseKeyStore"))
keyAlias = keystoreOSSProperties.getProperty("releaseKeyAlias")
keyPassword = keystoreOSSProperties.getProperty("releaseKeyPassword")
storePassword = keystoreOSSProperties.getProperty("releaseStorePassword")
} else {
project.logger.warn("OSS signing information not fully loaded from properties. Ensure it's set via environment variables or the properties file is correct.")
}
}
}
buildTypes {
release {
signingConfig = signingConfigs.getByName("release")
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
create("beta") {
initWith(getByName("debug"))
signingConfig = signingConfigs.getByName("debug")
applicationIdSuffix = ".beta"
versionNameSuffix = "-beta"
manifestPlaceholders["appName"] = "openScale beta"
manifestPlaceholders["appIcon"] = "@mipmap/ic_launcher_beta"
manifestPlaceholders["appRoundIcon"] = "@mipmap/ic_launcher_beta_round"
}
create("oss") {
initWith(getByName("release"))
signingConfig = signingConfigs.getByName("oss")
applicationIdSuffix = ".oss"
versionNameSuffix = "-oss"
manifestPlaceholders["appName"] = "openScale"
manifestPlaceholders["appIcon"] = "@mipmap/ic_launcher_beta"
manifestPlaceholders["appRoundIcon"] = "@mipmap/ic_launcher_beta_round"
}
}
applicationVariants.all {
val variant = this
outputs.all {
val output = this
if (output is com.android.build.gradle.internal.api.BaseVariantOutputImpl) {
output.outputFileName = "openScale-${variant.buildType.name}.apk"
}
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
kapt {
arguments {
arg("room.schemaLocation", "$projectDir/schemas")
}
}
buildFeatures {
compose = true
buildConfig = true
}
}
dependencies {
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.ui)
implementation(libs.androidx.ui.graphics)
implementation(libs.androidx.ui.tooling.preview)
implementation(libs.androidx.material3)
implementation(libs.androidx.navigation.compose)
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
androidTestImplementation(platform(libs.androidx.compose.bom))
androidTestImplementation(libs.androidx.ui.test.junit4)
debugImplementation(libs.androidx.ui.tooling)
debugImplementation(libs.androidx.ui.test.manifest)
// Room
implementation(libs.androidx.room.runtime)
implementation(libs.androidx.room.ktx)
kapt(libs.androidx.room.compiler)
implementation(libs.datastore.preferences)
// ViewModel
implementation(libs.androidx.lifecycle.viewmodel.ktx)
implementation(libs.androidx.lifecycle.viewmodel.compose)
// Vico charts
implementation(libs.compose.charts)
implementation(libs.compose.charts.m3)
// Compose reorderable
implementation(libs.compose.reorderable)
implementation(libs.compose.material.icons.extended)
// Kotlin-CSV
implementation(libs.kotlin.csv.jvm)
// Blessed Kotlin
// implementation(libs.blessed.kotlin)
implementation(libs.blessed.java)
}