[versions] agp = "9.4.1" kotlin = "2.4.21" coroutines = "1.11.0" core-ktx = "1.19.1" activity = "1.13.0" lifecycle = "2.11.0" compose-bom = "2026.09.00" datastore = "1.2.1" media3 = "1.11.1" ass-media = "0.5.1" jellyfin-ffmpeg = "1.9.0+1" libvlc = "3.7.7" jellyfin-sdk = "1.9.2" coil = "3.6.3" timber = "5.0.1" profileinstaller = "1.4.1" navigation3 = "1.2.0" okhttp = "5.5.0" slf4j = "2.0.20" serialization = "1.11.0" benchmark = "1.5.0" uiautomator = "2.4.0" androidx-test-junit = "1.3.0" zxing = "3.5.3" compose-multiplatform = "1.12.2" jna = "5.18.1" koin = "4.2.2" junit = "4.13.2" [libraries] androidx-core-ktx = { module = "androidx.core:core-ktx", version.ref = "core-ktx" } androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "activity" } androidx-lifecycle-runtime-compose = { module = "androidx.lifecycle:lifecycle-runtime-compose", version.ref = "lifecycle" } androidx-lifecycle-viewmodel-compose = { module = "androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "lifecycle" } # Multiplatform (android + desktop) ViewModel: the same androidx artifact, it publishes a desktop variant. androidx-lifecycle-viewmodel = { module = "androidx.lifecycle:lifecycle-viewmodel", version.ref = "lifecycle" } androidx-datastore-preferences-core = { module = "androidx.datastore:datastore-preferences-core", version.ref = "datastore" } compose-bom = { module = "androidx.compose:compose-bom", version.ref = "compose-bom" } compose-ui = { module = "androidx.compose.ui:ui" } compose-foundation = { module = "androidx.compose.foundation:foundation" } compose-ui-tooling = { module = "androidx.compose.ui:ui-tooling" } compose-ui-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview" } kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "coroutines" } kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "coroutines" } media3-exoplayer = { module = "androidx.media3:media3-exoplayer", version.ref = "media3" } media3-exoplayer-hls = { module = "androidx.media3:media3-exoplayer-hls", version.ref = "media3" } media3-ui = { module = "androidx.media3:media3-ui", version.ref = "media3" } media3-common = { module = "androidx.media3:media3-common", version.ref = "media3" } ass-media = { module = "io.github.peerless2012:ass-media", version.ref = "ass-media" } jellyfin-ffmpeg = { module = "org.jellyfin.media3:media3-ffmpeg-decoder", version.ref = "jellyfin-ffmpeg" } libvlc = { module = "org.videolan.android:libvlc-all", version.ref = "libvlc" } jellyfin-sdk = { module = "org.jellyfin.sdk:jellyfin-core", version.ref = "jellyfin-sdk" } coil-compose = { module = "io.coil-kt.coil3:coil-compose", version.ref = "coil" } coil-network-okhttp = { module = "io.coil-kt.coil3:coil-network-okhttp", version.ref = "coil" } okhttp = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" } androidx-profileinstaller = { module = "androidx.profileinstaller:profileinstaller", version.ref = "profileinstaller" } navigation3-runtime = { module = "androidx.navigation3:navigation3-runtime", version.ref = "navigation3" } navigation3-ui = { module = "androidx.navigation3:navigation3-ui", version.ref = "navigation3" } androidx-lifecycle-viewmodel-navigation3 = { module = "androidx.lifecycle:lifecycle-viewmodel-navigation3", version.ref = "lifecycle" } timber = { module = "com.jakewharton.timber:timber", version.ref = "timber" } kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "serialization" } androidx-benchmark-macro-junit4 = { module = "androidx.benchmark:benchmark-macro-junit4", version.ref = "benchmark" } androidx-uiautomator = { module = "androidx.test.uiautomator:uiautomator", version.ref = "uiautomator" } androidx-test-junit = { module = "androidx.test.ext:junit", version.ref = "androidx-test-junit" } zxing-core = { module = "com.google.zxing:core", version.ref = "zxing" } slf4j-api = { module = "org.slf4j:slf4j-api", version.ref = "slf4j" } jna = { module = "net.java.dev.jna:jna", version.ref = "jna" } # Compose Multiplatform for the shared UI (ui:shared): on android these resolve to the androidx artifacts. cmp-runtime = { module = "org.jetbrains.compose.runtime:runtime", version.ref = "compose-multiplatform" } cmp-foundation = { module = "org.jetbrains.compose.foundation:foundation", version.ref = "compose-multiplatform" } cmp-ui = { module = "org.jetbrains.compose.ui:ui", version.ref = "compose-multiplatform" } # Skia natives for running Compose on this PC (ui:shared desktop tests). cmp-desktop-linux-x64 = { module = "org.jetbrains.compose.desktop:desktop-jvm-linux-x64", version.ref = "compose-multiplatform" } koin-core = { module = "io.insert-koin:koin-core", version.ref = "koin" } koin-android = { module = "io.insert-koin:koin-android", version.ref = "koin" } koin-compose-viewmodel = { module = "io.insert-koin:koin-compose-viewmodel", version.ref = "koin" } koin-core-viewmodel = { module = "io.insert-koin:koin-core-viewmodel", version.ref = "koin" } koin-test = { module = "io.insert-koin:koin-test", version.ref = "koin" } junit = { module = "junit:junit", version.ref = "junit" } [plugins] android-test = { id = "com.android.test", version.ref = "agp" } androidx-baselineprofile = { id = "androidx.baselineprofile", version.ref = "benchmark" } android-application = { id = "com.android.application", version.ref = "agp" } android-library = { id = "com.android.library", version.ref = "agp" } kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } android-kotlin-multiplatform-library = { id = "com.android.kotlin.multiplatform.library", version.ref = "agp" } compose-multiplatform = { id = "org.jetbrains.compose", version.ref = "compose-multiplatform" }