k9-mail/gradle/libs.versions.toml
2025-11-22 13:56:56 +01:00

362 lines
21 KiB
TOML

# Judging the impact of newer library versions on the app requires being intimately familiar with the code base.
# Please don't open pull requests upgrading dependencies if you're a new contributor.
# Instead, open an issue and let's discuss the upgrade there.
#
# Declarations are sorted alphabetically within their section.
#
# When upgrading dependencies, please follow these steps:
# 1. Update the version in this file.
# 2. Run `./gradlew dependencyGuard` and check the output for any conflicts.
# 3. Run `./gradlew build` and fix any issues.
# 4. Run the app and check for any issues.
[versions]
androidBilling = "7.1.1"
androidDesugar = "2.1.5"
androidMaterial = "1.12.0"
# AGP and tools should be updated together.
# Also, make sure AGP version is compatible with both AS and IntelliJ IDEA.
androidGradlePlugin = "8.11.1"
androidTools = "31.11.1"
androidxActivity = "1.10.1"
androidxAnnotation = "1.9.1"
androidxAppCompat = "1.7.1"
androidxAutofill = "1.3.0"
androidxBiometric = "1.1.0"
androidxCamera = "1.4.2"
# https://developer.android.com/jetpack/compose/bom/bom-mapping
androidxComposeBom = "2025.07.00"
androidxConstraintLayout = "2.2.1"
androidxCoordinatorLayout = "1.3.0"
androidxCore = "1.16.0"
androidxCoreSplashscreen = "1.0.1"
androidxFragment = "1.8.8"
androidxGlance = "1.1.1"
androidxGlanceMaterial3 = "1.1.1"
androidxLifecycle = "2.9.2"
androidxLocalBroadcastManager = "1.1.0"
androidxNavigation = "2.9.3"
androidxRecyclerView = "1.4.0"
androidxPreference = "1.2.1"
androidxSwiperefreshlayout = "1.1.0"
androidxTestCore = "1.7.0"
androidxTestEspresso = "3.7.0"
androidxTestExt = "1.3.0"
androidxTestRules = "1.7.0"
androidxTestRunner = "1.7.0"
androidxWebkit = "1.14.0"
androidxWork = "2.10.3"
apacheHttpclient5 = "5.5"
appAuth = "0.11.1"
assertk = "0.28.1"
circleImageView = "3.1.0"
ckchangelog = "2.0.0-beta02"
clikt = "5.0.3"
commonsIo = "2.20.0"
dependencyCheckPlugin = "0.52.0"
dependencyGuardPlugin = "0.5.0"
detektPlugin = "1.23.8"
detektPluginCompose = "0.4.26"
fastAdapter = "5.7.0"
forkhandlesBom = "2.22.4.0"
glide = "4.16.0"
gradle = "8.14.2"
icu4j = "77.1"
javaDiffUtils = "4.16"
jcipAnnotations = "1.0"
jetbrainsAnnotations = "26.0.2"
jetbrainsCompose = "1.8.2"
jetbrainsComposeLifecycle = "2.9.1"
jetbrainsComposeNavigation = "2.9.0-beta04"
jdom = "2.0.6.1"
jmapClient = "0.3.1"
jsoup = "1.19.1"
junit = "4.13.2"
jutf7 = "1.0.0"
jzlib = "1.0.7"
koinBom = "4.1.0"
konsist = "0.17.3"
kotlinBom = "2.2.0"
# Needs to match the version used by Gradle, just check with `./gradlew --version`
kotlinGradleBom = "2.0.21"
kotlinKsp = "2.2.0-2.0.2"
kotlinxCoroutines = "1.10.2"
kotlinxCollectionsImmutable = "0.4.0"
kotlinxDateTime = "0.7.1"
kotlinxIoCore = "0.8.0"
kotlinxSerialization = "1.9.0"
ktlint = "1.5.0"
ktor = "3.2.3"
kxml2 = "1.0"
landscapist = "2.5.1"
leakcanary = "2.14"
logbackClassic = "1.5.18"
mime4j = "0.8.13"
minidns = "1.1.1"
mockito = "5.18.0"
mockitoKotlin = "6.0.0"
mokkery = "2.9.0"
moshi = "1.15.2"
mozillaAndroidComponents = "141.0.1"
okhttp = "4.12.0"
okio = "3.16.0"
preferencesFix = "1.1.0"
robolectric = "4.15.1"
safeContentResolver = "1.0.0"
searchPreference = "2.7.3"
spotlessPlugin = "7.2.1"
timber = "5.0.1"
turbine = "1.2.1"
xmlpull = "1.0"
zxing = "3.5.3"
[plugins]
android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" }
android-library = { id = "com.android.library", version.ref = "androidGradlePlugin" }
android-lint = { id = "com.android.lint", version.ref = "androidGradlePlugin" }
android-test = { id = "com.android.test", version.ref = "androidGradlePlugin" }
compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlinBom" }
dependency-check = { id = "com.github.ben-manes.versions", version.ref = "dependencyCheckPlugin" }
dependency-guard = { id = "com.dropbox.dependency-guard", version.ref = "dependencyGuardPlugin" }
detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detektPlugin" }
jetbrains-compose = { id = "org.jetbrains.compose", version.ref = "jetbrainsCompose" }
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlinBom" }
kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlinBom" }
kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlinBom" }
kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlinBom" }
kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlinBom" }
ksp = { id = "com.google.devtools.ksp", version.ref = "kotlinKsp" }
spotless = { id = "com.diffplug.spotless", version.ref = "spotlessPlugin" }
dev-mokkery = { id = "dev.mokkery", version.ref = "mokkery" }
[libraries]
android-billing = { module = "com.android.billingclient:billing", version.ref = "androidBilling" }
android-billing-ktx = { module = "com.android.billingclient:billing-ktx", version.ref = "androidBilling" }
android-desugar = { module = "com.android.tools:desugar_jdk_libs", version.ref = "androidDesugar" }
android-desugar-nio = { module = "com.android.tools:desugar_jdk_libs_nio", version.ref = "androidDesugar" }
android-material = { module = "com.google.android.material:material", version.ref = "androidMaterial" }
android-tools-common = { module = "com.android.tools:common", version.ref = "androidTools" }
androidx-activity = { module = "androidx.activity:activity", version.ref = "androidxActivity" }
androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidxActivity" }
androidx-annotation = { module = "androidx.annotation:annotation", version.ref = "androidxAnnotation" }
androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidxAppCompat" }
androidx-autofill = { module = "androidx.autofill:autofill", version.ref = "androidxAutofill" }
androidx-biometric = { module = "androidx.biometric:biometric", version.ref = "androidxBiometric" }
androidx-camera-core = { module = "androidx.camera:camera-core", version.ref = "androidxCamera" }
androidx-camera-camera2 = { module = "androidx.camera:camera-camera2", version.ref = "androidxCamera" }
androidx-camera-view = { module = "androidx.camera:camera-view", version.ref = "androidxCamera" }
androidx-camera-lifecycle = { module = "androidx.camera:camera-lifecycle", version.ref = "androidxCamera" }
androidx-compose-bom = { module = "androidx.compose:compose-bom", version.ref = "androidxComposeBom" }
androidx-compose-foundation = { module = "androidx.compose.foundation:foundation" }
androidx-compose-material-icons-extended = { module = "androidx.compose.material:material-icons-extended" }
androidx-compose-material3 = { module = "androidx.compose.material3:material3" }
androidx-compose-material3-adaptive = { module = "androidx.compose.material3.adaptive:adaptive" }
androidx-compose-material3-adaptive-layout = { module = "androidx.compose.material3.adaptive:adaptive-layout" }
androidx-compose-material3-adaptive-navigation = { module = "androidx.compose.material3.adaptive:adaptive-navigation" }
androidx-compose-material3-windowSizeClass = { module = "androidx.compose.material3:material3-window-size-class" }
androidx-compose-runtime = { module = "androidx.compose.runtime:runtime" }
androidx-compose-ui-test-junit4 = { module = "androidx.compose.ui:ui-test-junit4" }
androidx-compose-ui-test-manifest = { module = "androidx.compose.ui:ui-test-manifest" }
androidx-compose-ui-tooling = { module = "androidx.compose.ui:ui-tooling" }
androidx-compose-ui-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview" }
androidx-compose-ui-util = { module = "androidx.compose.ui:ui-util" }
androidx-constraintlayout = { module = "androidx.constraintlayout:constraintlayout", version.ref = "androidxConstraintLayout" }
androidx-coordinatorlayout = { module = "androidx.coordinatorlayout:coordinatorlayout", version.ref = "androidxCoordinatorLayout" }
androidx-core = { module = "androidx.core:core", version.ref = "androidxCore" }
androidx-core-ktx = { module = "androidx.core:core-ktx", version.ref = "androidxCore" }
androidx-core-splashscreen = { module = "androidx.core:core-splashscreen", version.ref = "androidxCoreSplashscreen" }
androidx-fragment = { module = "androidx.fragment:fragment", version.ref = "androidxFragment" }
androidx-fragment-compose = { module = "androidx.fragment:fragment-compose", version.ref = "androidxFragment" }
androidx-fragment-testing = { module = "androidx.fragment:fragment-testing", version.ref = "androidxFragment" }
androidx-glance-appwidget = { module = "androidx.glance:glance-appwidget", version.ref = "androidxGlance" }
androidx-glance-appwidget-preview = { module = "androidx.glance:glance-appwidget-preview", version.ref = "androidxGlance" }
androidx-glance-preview = { module = "androidx.glance:glance-preview", version.ref = "androidxGlance" }
androidx-glance-material3 = { module = "androidx.glance:glance-material3", version.ref = "androidxGlanceMaterial3" }
androidx-lifecycle-common = { module = "androidx.lifecycle:lifecycle-common", version.ref = "androidxLifecycle" }
androidx-lifecycle-process = { module = "androidx.lifecycle:lifecycle-process", version.ref = "androidxLifecycle" }
androidx-lifecycle-runtime-compose = { module = "androidx.lifecycle:lifecycle-runtime-compose", version.ref = "androidxLifecycle" }
androidx-lifecycle-runtime-ktx = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "androidxLifecycle" }
androidx-lifecycle-runtime-testing = { module = "androidx.lifecycle:lifecycle-runtime-testing", version.ref = "androidxLifecycle" }
androidx-lifecycle-viewmodel = { module = "androidx.lifecycle:lifecycle-viewmodel", version.ref = "androidxLifecycle" }
androidx-lifecycle-viewmodel-compose = { module = "androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "androidxLifecycle" }
androidx-lifecycle-viewmodel-ktx = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "androidxLifecycle" }
androidx-lifecycle-livedata-ktx = { module = "androidx.lifecycle:lifecycle-livedata-ktx", version.ref = "androidxLifecycle" }
androidx-localbroadcastmanager = { module = "androidx.localbroadcastmanager:localbroadcastmanager", version.ref = "androidxLocalBroadcastManager" }
androidx-navigation-compose = { module = "androidx.navigation:navigation-compose", version.ref = "androidxNavigation" }
androidx-navigation-fragment = { module = "androidx.navigation:navigation-fragment", version.ref = "androidxNavigation" }
androidx-navigation-ui = { module = "androidx.navigation:navigation-ui", version.ref = "androidxNavigation" }
androidx-navigation-testing = { module = "androidx.navigation:navigation-testing", version.ref = "androidxNavigation" }
androidx-preference = { module = "androidx.preference:preference", version.ref = "androidxPreference" }
androidx-recyclerview = { module = "androidx.recyclerview:recyclerview", version.ref = "androidxRecyclerView" }
androidx-swiperefreshlayout = { module = "androidx.swiperefreshlayout:swiperefreshlayout", version.ref = "androidxSwiperefreshlayout" }
androidx-test-core = { module = "androidx.test:core", version.ref = "androidxTestCore" }
androidx-test-espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "androidxTestEspresso" }
androidx-test-ext-junit-ktx = { module = "androidx.test.ext:junit-ktx", version.ref = "androidxTestExt" }
androidx-test-rules = { module = "androidx.test:rules", version.ref = "androidxTestRules" }
androidx-test-runner = { module = "androidx.test:runner", version.ref = "androidxTestRunner" }
androidx-webkit = { module = "androidx.webkit:webkit", version.ref = "androidxWebkit" }
androidx-work-runtime = { module = "androidx.work:work-runtime", version.ref = "androidxWork" }
androidx-work-testing = { module = "androidx.work:work-testing", version.ref = "androidxWork" }
apache-httpclient5 = { module = "org.apache.httpcomponents.client5:httpclient5", version.ref = "apacheHttpclient5" }
appauth = { module = "net.openid:appauth", version.ref = "appAuth" }
assertk = { module = "com.willowtreeapps.assertk:assertk-jvm", version.ref = "assertk" }
circleImageView = { module = "de.hdodenhof:circleimageview", version.ref = "circleImageView" }
ckchangelog-core = { module = "de.cketti.library.changelog:ckchangelog-core", version.ref = "ckchangelog" }
clikt = { module = "com.github.ajalt.clikt:clikt", version.ref = "clikt" }
commons-io = { module = "commons-io:commons-io", version.ref = "commonsIo" }
detekt-plugin-compose = { module = "io.nlopez.compose.rules:detekt", version.ref = "detektPluginCompose" }
diff-utils = { module = "io.github.java-diff-utils:java-diff-utils", version.ref = "javaDiffUtils" }
fastadapter = { module = "com.mikepenz:fastadapter", version.ref = "fastAdapter" }
fastadapter-extensions-drag = { module = "com.mikepenz:fastadapter-extensions-drag", version.ref = "fastAdapter" }
fastadapter-extensions-utils = { module = "com.mikepenz:fastadapter-extensions-utils", version.ref = "fastAdapter" }
forkhandles-bom = { module = "dev.forkhandles:forkhandles-bom", version.ref = "forkhandlesBom" }
forkhandles-fabrikate4k = { module = "dev.forkhandles:fabrikate4k" }
glide = { module = "com.github.bumptech.glide:glide", version.ref = "glide" }
glide-compiler = { module = "com.github.bumptech.glide:compiler", version.ref = "glide" }
icu4j-charset = { module = "com.ibm.icu:icu4j-charset", version.ref = "icu4j" }
jetbrains-annotations = { module = "org.jetbrains:annotations", version.ref = "jetbrainsAnnotations" }
jetbrains-compose-lifecycle-runtime = { module = "org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose", version.ref = "jetbrainsComposeLifecycle" }
jetbrains-compose-lifecycle-viewmodel = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel", version.ref = "jetbrainsComposeLifecycle" }
jetbrains-compose-lifecycle-viewmodel-compose = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "jetbrainsComposeLifecycle" }
jetbrains-compose-lifecycle-viewmodel-savedstate = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate", version.ref = "jetbrainsComposeLifecycle" }
jetbrains-compose-navigation = { module = "org.jetbrains.androidx.navigation:navigation-compose", version.ref = "jetbrainsComposeNavigation" }
jcip-annotations = { module = "net.jcip:jcip-annotations", version.ref = "jcipAnnotations" }
jdom2 = { module = "org.jdom:jdom2", version.ref = "jdom" }
jmap-client = { module = "rs.ltt.jmap:jmap-client", version.ref = "jmapClient" }
jsoup = { module = "org.jsoup:jsoup", version.ref = "jsoup" }
junit = { module = "junit:junit", version.ref = "junit" }
jutf7 = { module = "com.beetstra.jutf7:jutf7", version.ref = "jutf7" }
jzlib = { module = "com.jcraft:jzlib", version.ref = "jzlib" }
koin-bom = { module = "io.insert-koin:koin-bom", version.ref = "koinBom" }
koin-core = { module = "io.insert-koin:koin-core" }
koin-android = { module = "io.insert-koin:koin-android" }
koin-androidx-compose = { module = "io.insert-koin:koin-androidx-compose" }
koin-test = { module = "io.insert-koin:koin-test" }
koin-test-junit4 = { module = "io.insert-koin:koin-test-junit4" }
konsist = { module = "com.lemonappdev:konsist", version.ref = "konsist" }
kotlin-bom = { module = "org.jetbrains.kotlin:kotlin-bom", version.ref = "kotlinBom" }
kotlin-gradle-bom = { module = "org.jetbrains.kotlin:kotlin-bom", version.ref = "kotlinGradleBom" }
kotlin-reflect = { module = "org.jetbrains.kotlin:kotlin-reflect" }
kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib" }
kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test" }
kotlin-test-junit = { module = "org.jetbrains.kotlin:kotlin-test-junit" }
kotlinx-collections-immutable = { module = "org.jetbrains.kotlinx:kotlinx-collections-immutable", version.ref = "kotlinxCollectionsImmutable" }
kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "kotlinxCoroutines" }
kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinxCoroutines" }
kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kotlinxCoroutines" }
kotlinx-datetime = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version.ref = "kotlinxDateTime" }
kotlinx-io-core = { module = "org.jetbrains.kotlinx:kotlinx-io-core", version.ref = "kotlinxIoCore" }
kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinxSerialization" }
ktor-client-core = { module = "io.ktor:ktor-client-core", version.ref = "ktor" }
ktor-client-cio = { module = "io.ktor:ktor-client-cio", version.ref = "ktor" }
ktor-client-content-negotiation = { module = "io.ktor:ktor-client-content-negotiation", version.ref = "ktor" }
ktor-client-logging = { module = "io.ktor:ktor-client-logging", version.ref = "ktor" }
ktor-serialization-json = { module = "io.ktor:ktor-serialization-kotlinx-json", version.ref = "ktor" }
kxml2 = { module = "com.github.cketti:kxml2-extracted-from-android", version.ref = "kxml2" }
lanscapist-coil = { module = "com.github.skydoves:landscapist-coil3", version.ref = "landscapist" }
leakcanary-android = { module = "com.squareup.leakcanary:leakcanary-android", version.ref = "leakcanary" }
logback-classic = { module = "ch.qos.logback:logback-classic", version.ref = "logbackClassic" }
mime4j-core = { module = "org.apache.james:apache-mime4j-core", version.ref = "mime4j" }
mime4j-dom = { module = "org.apache.james:apache-mime4j-dom", version.ref = "mime4j" }
minidns-hla = { module = "org.minidns:minidns-hla", version.ref = "minidns" }
mockito-core = { module = "org.mockito:mockito-core", version.ref = "mockito" }
mockito-kotlin = { module = "org.mockito.kotlin:mockito-kotlin", version.ref = "mockitoKotlin" }
moshi = { module = "com.squareup.moshi:moshi", version.ref = "moshi" }
moshi-kotlin-codegen = { module = "com.squareup.moshi:moshi-kotlin-codegen", version.ref = "moshi" }
mozilla-components-glean = { module = "org.mozilla.components:service-glean", version.ref = "mozillaAndroidComponents" }
mozilla-components-fetch-okhttp = { module = "org.mozilla.components:lib-fetch-okhttp", version.ref = "mozillaAndroidComponents" }
okhttp = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" }
okhttp-mockwebserver = { module = "com.squareup.okhttp3:mockwebserver", version.ref = "okhttp" }
okio = { module = "com.squareup.okio:okio", version.ref = "okio" }
preferencex = { module = "com.takisoft.preferencex:preferencex", version.ref = "preferencesFix" }
preferencex-colorpicker = { module = "com.takisoft.preferencex:preferencex-colorpicker", version.ref = "preferencesFix" }
preferencex-datetimepicker = { module = "com.takisoft.preferencex:preferencex-datetimepicker", version.ref = "preferencesFix" }
robolectric = { module = "org.robolectric:robolectric", version.ref = "robolectric" }
safeContentResolver = { module = "de.cketti.safecontentresolver:safe-content-resolver-v21", version.ref = "safeContentResolver" }
searchPreference = { module = "com.github.ByteHamster:SearchPreference", version.ref = "searchPreference" }
timber = { module = "com.jakewharton.timber:timber", version.ref = "timber" }
turbine = { module = "app.cash.turbine:turbine", version.ref = "turbine" }
xmlpull = { module = "com.github.cketti:xmlpull-extracted-from-android", version.ref = "xmlpull" }
zxing = { module = "com.google.zxing:core", version.ref = "zxing" }
[bundles]
shared-kmp-common = [
"koin-core",
"kotlinx-collections-immutable",
"kotlinx-coroutines-core",
"kotlinx-datetime",
"kotlinx-serialization-json",
]
shared-kmp-android = [
"koin-android",
"kotlinx-coroutines-android",
]
shared-kmp-compose = [
"jetbrains-compose-lifecycle-runtime",
"jetbrains-compose-lifecycle-viewmodel",
"jetbrains-compose-lifecycle-viewmodel-compose",
"jetbrains-compose-lifecycle-viewmodel-savedstate",
# Disabled, as it's still in beta
# "jetbrains-compose-navigation",
]
shared-kmp-compose-android = [
"koin-androidx-compose",
]
shared-kmp-common-test = [
"assertk",
"koin-test",
"kotlin-test",
"kotlin-test-junit",
"kotlinx-coroutines-test",
"turbine",
]
shared-jvm-main = [
"koin-core",
"kotlinx-coroutines-core",
"kotlinx-datetime",
]
shared-jvm-android = [
"androidx-core",
"androidx-core-ktx",
"koin-android",
]
shared-jvm-android-app = [
"android-material",
"androidx-activity",
"androidx-core-splashscreen",
]
shared-jvm-android-compose = [
"androidx-compose-foundation",
"androidx-compose-ui-tooling-preview",
"androidx-lifecycle-runtime-compose",
"androidx-lifecycle-viewmodel-compose",
"androidx-navigation-compose",
"koin-androidx-compose",
"kotlinx-collections-immutable",
"kotlinx-serialization-json",
]
shared-jvm-android-compose-debug = [
"androidx-compose-ui-test-manifest",
"androidx-compose-ui-tooling",
]
shared-jvm-androidtest-compose = [
"androidx-compose-ui-test-junit4",
"androidx-lifecycle-runtime-testing",
]
shared-jvm-test = [
"assertk",
"junit",
"koin-test",
"koin-test-junit4",
"kotlin-test",
"kotlinx-coroutines-test",
"mockito-core",
"mockito-kotlin",
"turbine",
]
shared-jvm-test-compose = [
"androidx-compose-ui-test-junit4",
"androidx-test-espresso-core",
"robolectric",
]