plugins { id("com.android.application") id("org.jetbrains.kotlin.android") id("org.jetbrains.kotlin.plugin.serialization") id("org.jetbrains.kotlin.plugin.compose") } android { namespace = "org.terst.doot.widget" // 36: this is a single-user app, sideloaded only onto the one phone it's // built for, not distributed broadly -- so "what does the widest range // of devices support" (the reasoning behind the 2026-08-05 pass that set // this to 31/34) is the wrong question. The actual device runs Android // 16 (API 36); targeting anything lower means writing around // capabilities that are just... there. build-tools;36.0.0 and // platforms;android-36 are installed locally (see // project-doot-widget-build memory) so this compiles clean, no D8 // version warnings. compileSdk = 36 defaultConfig { applicationId = "org.terst.doot.widget" // minSdk == targetSdk == compileSdk == 36, matching the one real // device this ships to exactly. No fallback path for anything // older is needed or wanted -- corrected 2026-08-06 after // discovering the prior pass's "most devices" framing didn't apply // here. Verified this actually installs by building a real API 36 // AVD (doot_test_api36) and installing onto it directly, the same // way the wrong-minSdk mistake was caught in the first place. minSdk = 36 targetSdk = 36 versionCode = 1 versionName = "1.0" } signingConfigs { create("release") { storeFile = file("../doot-widget.keystore") storePassword = "dootwid2026" keyAlias = "doot-widget" keyPassword = "dootwid2026" } } buildTypes { release { isMinifyEnabled = false signingConfig = signingConfigs.getByName("release") } } buildFeatures { compose = true } kotlinOptions { jvmTarget = "11" } compileOptions { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 } } dependencies { val composeBom = platform("androidx.compose:compose-bom:2024.02.00") implementation(composeBom) implementation("androidx.glance:glance-appwidget:1.1.0") implementation("androidx.glance:glance-material3:1.1.0") implementation("androidx.work:work-runtime-ktx:2.9.0") implementation("androidx.datastore:datastore-preferences:1.1.1") implementation("com.squareup.okhttp3:okhttp:4.12.0") implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.0") implementation("androidx.activity:activity-compose:1.9.0") implementation("androidx.compose.material3:material3") implementation("androidx.compose.ui:ui") testImplementation("junit:junit:4.13.2") testImplementation("io.mockk:mockk:1.13.9") testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.0") }