plugins { id("com.android.application") id("org.jetbrains.kotlin.android") id("org.jetbrains.kotlin.plugin.compose") id("io.sentry.android.gradle") version "6.17.0" } val credentialsFile = rootProject.file("../credentials.json") android { namespace = "nl.guidoit.swimbuddy" compileSdk = 35 defaultConfig { applicationId = "nl.guidoit.swimbuddy" minSdk = 30 targetSdk = 35 val wearVersionOffset = 50_000_000 versionName = project.findProperty("versionName") as? String ?: "1.0.0" versionCode = (project.findProperty("versionCode") as? String)?.toInt() ?: (wearVersionOffset + 1) val sentryDsn = System.getenv("SENTRY_DSN") ?: "" manifestPlaceholders["sentryDsn"] = sentryDsn } signingConfigs { if (credentialsFile.exists()) { create("release") { val credentials = groovy.json.JsonSlurper().parse(credentialsFile) as Map<*, *> val keystoreData = credentials["android"]!! as Map<*, *> val keyData = keystoreData["keystore"]!! as Map<*, *> storeFile = rootProject.file(keyData["keystorePath"] as String) storePassword = keyData["keystorePassword"] as String keyAlias = keyData["keyAlias"] as String keyPassword = keyData["keyPassword"] as? String ?: keyData["keystorePassword"] as String } } } buildTypes { release { isMinifyEnabled = true isShrinkResources = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) if (credentialsFile.exists()) { signingConfig = signingConfigs.getByName("release") } } } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = "17" } buildFeatures { compose = true } } dependencies { // Wear OS Compose implementation("androidx.wear.compose:compose-material:1.3.1") implementation("androidx.wear.compose:compose-foundation:1.5.0") implementation("androidx.wear.compose:compose-navigation:1.3.1") // Compose implementation(platform("androidx.compose:compose-bom:2024.12.01")) implementation("androidx.compose.ui:ui") implementation("androidx.compose.material3:material3") implementation("androidx.compose.ui:ui-tooling-preview") implementation("androidx.activity:activity-compose:1.9.3") implementation("androidx.lifecycle:lifecycle-runtime-compose:2.8.7") implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7") // Health Services implementation("androidx.health:health-services-client:1.1.0-rc02") // Wearable Data Layer implementation("com.google.android.gms:play-services-wearable:18.2.0") // Coroutines implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.7.3") // Gson for JSON implementation("com.google.code.gson:gson:2.11.0") // Sentry implementation("io.sentry:sentry-android:8.52.0") } sentry { uploadNativeSymbols = true includeNativeSources = true autoInstallation { enabled = false } }