mirror of
https://github.com/andwati/ledga.git
synced 2026-10-18 03:12:55 +00:00
Mark any transaction as Fuel or Car Service from the detail sheet (a tag separate from its category). New 'Car expenses' screen (You tab) shows the car's lifetime cost plus per-tag This Week / This Month / All Time, summed across every SIM. DB v4->v5 adds a nullable carTag column (additive, no rebuild). Also: notifications now carry a tap intent, so tapping opens the app and clears them instead of lingering until manually swiped.
137 lines
4.4 KiB
Kotlin
137 lines
4.4 KiB
Kotlin
plugins {
|
|
id("com.android.application")
|
|
id("org.jetbrains.kotlin.android")
|
|
id("org.jetbrains.kotlin.plugin.compose")
|
|
id("org.jetbrains.kotlin.plugin.serialization")
|
|
id("com.google.devtools.ksp")
|
|
id("com.google.dagger.hilt.android")
|
|
}
|
|
|
|
android {
|
|
namespace = "com.ledga.app"
|
|
compileSdk = 36
|
|
|
|
signingConfigs {
|
|
create("release") {
|
|
val keystoreFile = rootProject.file("keystore/ledga-release.jks")
|
|
if (keystoreFile.exists()) {
|
|
storeFile = keystoreFile
|
|
storePassword = System.getenv("KEYSTORE_PASSWORD") ?: "ledga2026"
|
|
keyAlias = System.getenv("KEY_ALIAS") ?: "ledga"
|
|
keyPassword = System.getenv("KEY_PASSWORD") ?: "ledga2026"
|
|
}
|
|
}
|
|
}
|
|
|
|
defaultConfig {
|
|
applicationId = "com.ledga.app"
|
|
minSdk = 26
|
|
targetSdk = 34
|
|
versionCode = 21
|
|
versionName = "1.6.0"
|
|
|
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
|
}
|
|
|
|
buildTypes {
|
|
release {
|
|
isMinifyEnabled = true
|
|
isShrinkResources = true
|
|
signingConfig = signingConfigs.getByName("release")
|
|
proguardFiles(
|
|
getDefaultProguardFile("proguard-android-optimize.txt"),
|
|
"proguard-rules.pro"
|
|
)
|
|
}
|
|
}
|
|
|
|
compileOptions {
|
|
sourceCompatibility = JavaVersion.VERSION_17
|
|
targetCompatibility = JavaVersion.VERSION_17
|
|
}
|
|
|
|
kotlinOptions {
|
|
jvmTarget = "17"
|
|
}
|
|
|
|
buildFeatures {
|
|
compose = true
|
|
buildConfig = true
|
|
}
|
|
|
|
packaging {
|
|
resources {
|
|
excludes += setOf(
|
|
"META-INF/INDEX.LIST",
|
|
"META-INF/DEPENDENCIES",
|
|
"META-INF/LICENSE.md",
|
|
"META-INF/NOTICE.md"
|
|
)
|
|
}
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
// Compose BOM
|
|
val composeBom = platform("androidx.compose:compose-bom:2026.03.00")
|
|
implementation(composeBom)
|
|
implementation("androidx.compose.ui:ui")
|
|
implementation("androidx.compose.ui:ui-graphics")
|
|
implementation("androidx.compose.ui:ui-tooling-preview")
|
|
implementation("androidx.compose.ui:ui-text-google-fonts")
|
|
implementation("androidx.compose.material3:material3")
|
|
implementation("androidx.compose.material:material-icons-extended")
|
|
debugImplementation("androidx.compose.ui:ui-tooling")
|
|
|
|
// Activity & Lifecycle
|
|
implementation("androidx.activity:activity-compose:1.13.0")
|
|
implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.10.0")
|
|
implementation("androidx.lifecycle:lifecycle-runtime-compose:2.10.0")
|
|
implementation("androidx.core:core-ktx:1.16.0")
|
|
|
|
// Navigation
|
|
implementation("androidx.navigation:navigation-compose:2.9.7")
|
|
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3")
|
|
|
|
// Room
|
|
implementation("androidx.room:room-runtime:2.8.4")
|
|
implementation("androidx.room:room-ktx:2.8.4")
|
|
ksp("androidx.room:room-compiler:2.8.4")
|
|
|
|
// Hilt
|
|
implementation("com.google.dagger:hilt-android:2.57.1")
|
|
ksp("com.google.dagger:hilt-compiler:2.57.1")
|
|
implementation("androidx.hilt:hilt-navigation-compose:1.2.0")
|
|
|
|
// DataStore
|
|
implementation("androidx.datastore:datastore-preferences:1.2.1")
|
|
|
|
// WorkManager
|
|
implementation("androidx.work:work-runtime-ktx:2.11.1")
|
|
implementation("androidx.hilt:hilt-work:1.2.0")
|
|
ksp("androidx.hilt:hilt-compiler:1.2.0")
|
|
|
|
// Vico Charts
|
|
implementation("com.patrykandpatrick.vico:compose-m3:2.1.3")
|
|
|
|
// Google Drive Backup
|
|
implementation("com.google.android.gms:play-services-auth:21.3.0")
|
|
implementation("com.google.api-client:google-api-client-android:2.7.2")
|
|
implementation("com.google.apis:google-api-services-drive:v3-rev20241206-2.0.0")
|
|
implementation("com.google.http-client:google-http-client-gson:1.45.3")
|
|
|
|
// Splash Screen
|
|
implementation("androidx.core:core-splashscreen:1.0.1")
|
|
|
|
// Coroutines
|
|
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0")
|
|
|
|
// Testing
|
|
testImplementation("junit:junit:4.13.2")
|
|
testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.9.0")
|
|
androidTestImplementation("androidx.test.ext:junit:1.2.1")
|
|
androidTestImplementation("androidx.test.espresso:espresso-core:3.6.1")
|
|
androidTestImplementation(composeBom)
|
|
androidTestImplementation("androidx.compose.ui:ui-test-junit4")
|
|
}
|