mirror of
https://github.com/andwati/ledga.git
synced 2026-11-10 05:55:20 +00:00
- LedgaTopBar now applies WindowInsets.statusBars padding. Previously enableEdgeToEdge was on but the top bar drew at y=0, so the avatar and trailing icons sat under the system clock / WiFi indicator. - PillTabBar uses WindowInsets.navigationBars padding instead of a hardcoded 21dp bottom so the floating pill sits above the system gesture pill on devices like the S24 Ultra. - Typography switched from Google-Fonts Inter to FontFamily.SansSerif. Inter requires a downloadable-fonts round-trip via Google Play Services that doesn't always succeed; the fallback was hitting FontFamily.Default, which inherits the user's system font choice — on Samsung One UI that's frequently a handwritten / script style and broke the type rhythm everywhere. SansSerif uses the platform sans (One UI Sans on Galaxy, Roboto elsewhere) regardless of user preference.
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 = 4
|
|
versionName = "1.3.1"
|
|
|
|
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")
|
|
}
|