From 39a0fe3f98f1159408ceff9d21de97f69a2649ba Mon Sep 17 00:00:00 2001 From: Ricki Hirner Date: Sat, 18 Oct 2025 09:12:41 +0200 Subject: [PATCH] Update AboutLibraries and other dependencies (#1760) Update dependencies and modify AboutActivity to use dynamic library loading - Remove outdated aboutlibraries.json - Update AboutActivity to dynamically load libraries using LocalContext - Replace InvalidRemoteResourceException with InvalidICalendarException in sync managers - Bump dependency versions for various libraries including mikepenz-aboutLibraries, okhttp, and unifiedpush - Adjust build.gradle.kts and gradle/libs.versions.toml for new plugin and library versions --- app/build.gradle.kts | 10 ++++++---- .../at/bitfire/davdroid/sync/CalendarSyncManager.kt | 4 ++-- .../at/bitfire/davdroid/sync/JtxSyncManager.kt | 4 ++-- .../at/bitfire/davdroid/sync/TasksSyncManager.kt | 4 ++-- .../kotlin/at/bitfire/davdroid/ui/AboutActivity.kt | 8 +++++++- app/src/main/res/raw/aboutlibraries.json | 3 --- build.gradle.kts | 2 +- gradle/libs.versions.toml | 12 ++++++------ 8 files changed, 26 insertions(+), 21 deletions(-) delete mode 100644 app/src/main/res/raw/aboutlibraries.json diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 73b15224f..4cfc35b59 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -9,7 +9,7 @@ plugins { alias(libs.plugins.kotlin.android) alias(libs.plugins.ksp) - alias(libs.plugins.mikepenz.aboutLibraries) + alias(libs.plugins.mikepenz.aboutLibraries.android) } // Android configuration @@ -123,8 +123,10 @@ ksp { } aboutLibraries { - // exclude timestamps for reproducible builds [https://github.com/bitfireAT/davx5-ose/issues/994] - excludeFields = arrayOf("generated") + export { + // exclude timestamps for reproducible builds [https://github.com/bitfireAT/davx5-ose/issues/994] + excludeFields.add("generated") + } } dependencies { @@ -187,7 +189,7 @@ dependencies { @Suppress("RedundantSuppression") implementation(libs.dnsjava) implementation(libs.guava) - implementation(libs.mikepenz.aboutLibraries) + implementation(libs.mikepenz.aboutLibraries.m3) implementation(libs.okhttp.base) implementation(libs.okhttp.brotli) implementation(libs.okhttp.logging) diff --git a/app/src/main/kotlin/at/bitfire/davdroid/sync/CalendarSyncManager.kt b/app/src/main/kotlin/at/bitfire/davdroid/sync/CalendarSyncManager.kt index 118ab7186..1867b1995 100644 --- a/app/src/main/kotlin/at/bitfire/davdroid/sync/CalendarSyncManager.kt +++ b/app/src/main/kotlin/at/bitfire/davdroid/sync/CalendarSyncManager.kt @@ -32,7 +32,7 @@ import at.bitfire.ical4android.Event import at.bitfire.ical4android.EventReader import at.bitfire.ical4android.EventWriter import at.bitfire.ical4android.util.DateUtils -import at.bitfire.synctools.exception.InvalidRemoteResourceException +import at.bitfire.synctools.exception.InvalidICalendarException import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject @@ -265,7 +265,7 @@ class CalendarSyncManager @AssistedInject constructor( val events: List try { events = EventReader().readEvents(reader) - } catch (e: InvalidRemoteResourceException) { + } catch (e: InvalidICalendarException) { logger.log(Level.SEVERE, "Received invalid iCalendar, ignoring", e) notifyInvalidResource(e, fileName) return diff --git a/app/src/main/kotlin/at/bitfire/davdroid/sync/JtxSyncManager.kt b/app/src/main/kotlin/at/bitfire/davdroid/sync/JtxSyncManager.kt index c25dd8619..2c76b8b55 100644 --- a/app/src/main/kotlin/at/bitfire/davdroid/sync/JtxSyncManager.kt +++ b/app/src/main/kotlin/at/bitfire/davdroid/sync/JtxSyncManager.kt @@ -27,7 +27,7 @@ import at.bitfire.davdroid.resource.LocalResource import at.bitfire.davdroid.resource.SyncState import at.bitfire.davdroid.util.DavUtils.lastSegment import at.bitfire.ical4android.JtxICalObject -import at.bitfire.synctools.exception.InvalidRemoteResourceException +import at.bitfire.synctools.exception.InvalidICalendarException import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject @@ -167,7 +167,7 @@ class JtxSyncManager @AssistedInject constructor( try { // parse the reader content and return the list of ICalObjects icalobjects.addAll(JtxICalObject.fromReader(reader, localCollection)) - } catch (e: InvalidRemoteResourceException) { + } catch (e: InvalidICalendarException) { logger.log(Level.SEVERE, "Received invalid iCalendar, ignoring", e) notifyInvalidResource(e, fileName) return diff --git a/app/src/main/kotlin/at/bitfire/davdroid/sync/TasksSyncManager.kt b/app/src/main/kotlin/at/bitfire/davdroid/sync/TasksSyncManager.kt index 3f71cf252..9dec0fb87 100644 --- a/app/src/main/kotlin/at/bitfire/davdroid/sync/TasksSyncManager.kt +++ b/app/src/main/kotlin/at/bitfire/davdroid/sync/TasksSyncManager.kt @@ -26,7 +26,7 @@ import at.bitfire.davdroid.resource.LocalTaskList import at.bitfire.davdroid.resource.SyncState import at.bitfire.davdroid.util.DavUtils.lastSegment import at.bitfire.ical4android.Task -import at.bitfire.synctools.exception.InvalidRemoteResourceException +import at.bitfire.synctools.exception.InvalidICalendarException import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject @@ -161,7 +161,7 @@ class TasksSyncManager @AssistedInject constructor( val tasks: List try { tasks = Task.tasksFromReader(reader) - } catch (e: InvalidRemoteResourceException) { + } catch (e: InvalidICalendarException) { logger.log(Level.SEVERE, "Received invalid iCalendar, ignoring", e) notifyInvalidResource(e, fileName) return diff --git a/app/src/main/kotlin/at/bitfire/davdroid/ui/AboutActivity.kt b/app/src/main/kotlin/at/bitfire/davdroid/ui/AboutActivity.kt index 702c1fb59..e944cac5c 100644 --- a/app/src/main/kotlin/at/bitfire/davdroid/ui/AboutActivity.kt +++ b/app/src/main/kotlin/at/bitfire/davdroid/ui/AboutActivity.kt @@ -40,6 +40,7 @@ import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign @@ -52,8 +53,10 @@ import at.bitfire.davdroid.R import at.bitfire.davdroid.di.IoDispatcher import at.bitfire.davdroid.ui.ExternalUris.withStatParams import at.bitfire.davdroid.ui.composable.PixelBoxes +import com.mikepenz.aboutlibraries.Libs import com.mikepenz.aboutlibraries.ui.compose.LibraryDefaults import com.mikepenz.aboutlibraries.ui.compose.m3.LibrariesContainer +import com.mikepenz.aboutlibraries.util.withContext import dagger.BindsOptionalOf import dagger.Module import dagger.hilt.InstallIn @@ -175,7 +178,10 @@ class AboutActivity: AppCompatActivity() { ), dimensions = LibraryDefaults.libraryDimensions( itemSpacing = 8.dp - ) + ), + libraries = Libs.Builder() + .withContext(LocalContext.current) + .build() ) } } diff --git a/app/src/main/res/raw/aboutlibraries.json b/app/src/main/res/raw/aboutlibraries.json deleted file mode 100644 index 7a40a33e2..000000000 --- a/app/src/main/res/raw/aboutlibraries.json +++ /dev/null @@ -1,3 +0,0 @@ -{"metadata":{"generated":"2023-12-03T12:08:52.214Z"},"libraries":[ - {"uniqueId":"com.example:sample","funding":[],"developers":[{"name":"Sample Developer"}],"artifactVersion":"1.0","description":"This list has to be updated at release build time by explicitly writing to R.raw.aboutlibraries.","name":"Sample Dependency","licenses":["Sample-License"]} -], "licenses":{}} diff --git a/build.gradle.kts b/build.gradle.kts index 23e7254fc..e3102afe7 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,5 +9,5 @@ plugins { alias(libs.plugins.kotlin.android) apply false alias(libs.plugins.ksp) apply false - alias(libs.plugins.mikepenz.aboutLibraries) apply false + alias(libs.plugins.mikepenz.aboutLibraries.android) apply false } \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 3ead7126a..826d2df56 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -20,7 +20,7 @@ androidx-test-junit = "1.3.0" androidx-work = "2.10.5" bitfire-cert4android = "41009d48ed" bitfire-dav4jvm = "f11523619b" -bitfire-synctools = "095f96005b" +bitfire-synctools = "1a7f70b1a0" compose-accompanist = "0.37.3" compose-bom = "2025.10.00" dnsjava = "3.6.3" @@ -32,12 +32,12 @@ kotlin = "2.2.20" kotlinx-coroutines = "1.10.2" # see https://github.com/google/ksp/releases for version numbers ksp = "2.2.20-2.0.3" -mikepenz-aboutLibraries = "12.2.4" +mikepenz-aboutLibraries = "13.1.0" mockk = "1.14.5" -okhttp = "5.2.0" +okhttp = "5.2.1" openid-appauth = "0.11.1" room = "2.8.2" -unifiedpush = "3.1.0" +unifiedpush = "3.1.2" unifiedpush-fcm = "3.0.0" # Other libraries, especially ical4j, require Apache Commons. Some recent versions of Apache @@ -92,7 +92,7 @@ junit = { module = "junit:junit", version = "4.13.2" } kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kotlin" } kotlinx-coroutines = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinx-coroutines" } kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kotlinx-coroutines" } -mikepenz-aboutLibraries = { module = "com.mikepenz:aboutlibraries-compose-m3", version.ref = "mikepenz-aboutLibraries" } +mikepenz-aboutLibraries-m3 = { module = "com.mikepenz:aboutlibraries-compose-m3", version.ref = "mikepenz-aboutLibraries" } mockk = { module = "io.mockk:mockk", version.ref = "mockk" } mockk-android = { module = "io.mockk:mockk-android", version.ref = "mockk" } okhttp-base = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" } @@ -114,4 +114,4 @@ compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = " hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" } kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } -mikepenz-aboutLibraries = { id = "com.mikepenz.aboutlibraries.plugin", version.ref = "mikepenz-aboutLibraries" } +mikepenz-aboutLibraries-android = { id = "com.mikepenz.aboutlibraries.plugin.android", version.ref = "mikepenz-aboutLibraries" }