Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,10 @@ android {
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
// Required because reticulum-kt's public API touches java.time.LocalDateTime,
// which only exists on API 26+. Our minSdk is 24, so devices on Android 7.x
// crash with NoClassDefFoundError without this. See Sentry COLUMBA-8M.
isCoreLibraryDesugaringEnabled = true
}

kotlin {
Expand Down Expand Up @@ -366,6 +370,9 @@ dependencies {
implementation(project(":reticulum"))
implementation(project(":micron"))

// Java 8+ API desugaring (java.time.*, etc.) — required for API 24/25 support.
coreLibraryDesugaring(libs.android.desugar.jdk.libs)

// Core
implementation(libs.core.ktx)
implementation(libs.lifecycle.runtime)
Expand Down
5 changes: 5 additions & 0 deletions data/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ android {
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
// Required for API 24/25 support — see Sentry COLUMBA-8M.
isCoreLibraryDesugaringEnabled = true
}

kotlin {
Expand All @@ -34,6 +36,9 @@ android {
dependencies {
implementation(project(":domain"))

// Java 8+ API desugaring (java.time.*, etc.) — required for API 24/25 support.
coreLibraryDesugaring(libs.android.desugar.jdk.libs)

// Hilt
implementation(libs.hilt)
ksp(libs.hilt.compiler)
Expand Down
7 changes: 7 additions & 0 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ ktlint = "12.1.1"
detekt = "1.23.7"
serialization = "1.10.0"
coil = "2.7.0"
desugarJdkLibs = "2.1.5"

# JitPack-published libraries (formerly git submodules)
reticulumKt = "v0.0.16"
Expand All @@ -33,6 +34,12 @@ rns-android = { module = "com.github.torlando-tech.reticulum-kt:rns-android", ve
lxmf-kt = { module = "com.github.torlando-tech:LXMF-kt", version.ref = "lxmfKt" }
lxst-kt = { module = "com.github.torlando-tech:LXST-kt", version.ref = "lxstKt" }

# Java 8+ API desugaring — required because reticulum-kt's public API references
# java.time.LocalDateTime, which only exists on API 26+. Without this, any device
# on API 24/25 (Android 7.x) crashes with NoClassDefFoundError the first time
# Transport.registerDestination is reached. See Sentry COLUMBA-8M.
android-desugar-jdk-libs = { module = "com.android.tools:desugar_jdk_libs", version.ref = "desugarJdkLibs" }

# Compose
compose-bom = { module = "androidx.compose:compose-bom", version.ref = "composeBom" }
compose-ui = { module = "androidx.compose.ui:ui" }
Expand Down
8 changes: 8 additions & 0 deletions reticulum/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,11 @@ android {
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
// reticulum-kt's public API references java.time.LocalDateTime (API 26+),
// but our minSdk is 24. Without desugaring, devices on Android 7.x crash
// with NoClassDefFoundError as soon as Transport.registerDestination runs.
// See Sentry COLUMBA-8M.
isCoreLibraryDesugaringEnabled = true
}

kotlin {
Expand All @@ -55,6 +60,9 @@ dependencies {
// LXST module (telephony, codecs, audio pipeline)
api(libs.lxst.kt)

// Java 8+ API desugaring (java.time.*, etc.) — required for API 24/25 support.
coreLibraryDesugaring(libs.android.desugar.jdk.libs)

// Hilt
implementation(libs.hilt)
ksp(libs.hilt.compiler)
Expand Down
Loading