[versions] aboutlibraries = "11.2.3" acra = "5.12.0" android-compileSdk = "35" android-desugar = "2.1.4" android-gradle = "8.7.3" android-minSdk = "21" android-targetSdk = "35" androidx-activity = "1.9.3" androidx-appcompat = "1.7.0" androidx-cardview = "1.0.0" androidx-compose-foundation = "1.7.6" androidx-compose-ui = "1.7.6" androidx-constraintlayout = "2.2.0" androidx-core = "1.15.0" androidx-fragment = "1.8.5" androidx-leanback = "1.1.0-rc01" androidx-lifecycle = "2.8.7" androidx-media3 = "1.5.1" androidx-preference = "1.2.1" androidx-recyclerview = "1.3.2" androidx-startup = "1.2.0" androidx-tv = "1.0.0" androidx-tvprovider = "1.1.0-alpha01" androidx-window = "1.3.0" androidx-work = "2.10.0" coil = "3.0.4" detekt = "1.23.7" java-jdk = "21" jellyfin-androidx-media = "1.5.0+1" jellyfin-apiclient = "v0.7.10" jellyfin-sdk = "1.6.3" koin = "4.0.1" koin-compose = "4.0.1" kotest = "5.9.1" kotlin = "2.0.21" kotlinx-coroutines = "1.9.0" kotlinx-serialization = "1.7.3" markwon = "4.6.2" mockk = "1.13.14" slf4j-timber = "0.0.4" timber = "5.0.1" [plugins] aboutlibraries = { id = "com.mikepenz.aboutlibraries.plugin", version.ref = "aboutlibraries" } detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" } kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } [libraries] # Jellyfin jellyfin-apiclient = { module = "com.github.jellyfin.jellyfin-sdk-kotlin:android", version.ref = "jellyfin-apiclient" } jellyfin-sdk = { module = "org.jellyfin.sdk:jellyfin-core", version.ref = "jellyfin-sdk" } # Kotlin kotlin-gradle = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" } kotlinx-coroutines = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "kotlinx-coroutines" } kotlinx-coroutines-guava = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-guava", version.ref = "kotlinx-coroutines" } kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinx-serialization" } # Android(x) android-gradle = { module = "com.android.tools.build:gradle", version.ref = "android-gradle" } androidx-activity = { module = "androidx.activity:activity", version.ref = "androidx-activity" } androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidx-appcompat" } androidx-cardview = { module = "androidx.cardview:cardview", version.ref = "androidx-cardview" } androidx-compose-foundation = { module = "androidx.compose.foundation:foundation", version.ref = "androidx-compose-foundation" } androidx-compose-ui-tooling = { module = "androidx.compose.ui:ui-tooling", version.ref = "androidx-compose-ui" } androidx-constraintlayout = { module = "androidx.constraintlayout:constraintlayout", version.ref = "androidx-constraintlayout" } androidx-core = { module = "androidx.core:core-ktx", version.ref = "androidx-core" } androidx-fragment = { module = "androidx.fragment:fragment-ktx", version.ref = "androidx-fragment" } androidx-fragment-compose = { module = "androidx.fragment:fragment-compose", version.ref = "androidx-fragment" } androidx-leanback-core = { module = "androidx.leanback:leanback", version.ref = "androidx-leanback" } androidx-leanback-preference = { module = "androidx.leanback:leanback-preference", version.ref = "androidx-leanback" } androidx-lifecycle-process = { module = "androidx.lifecycle:lifecycle-process", version.ref = "androidx-lifecycle" } androidx-lifecycle-runtime = { module = "androidx.lifecycle:lifecycle-runtime", version.ref = "androidx-lifecycle" } androidx-lifecycle-service = { module = "androidx.lifecycle:lifecycle-service", version.ref = "androidx-lifecycle" } androidx-lifecycle-viewmodel = { module = "androidx.lifecycle:lifecycle-viewmodel", version.ref = "androidx-lifecycle" } androidx-media3-session = { module = "androidx.media3:media3-session", version.ref = "androidx-media3" } androidx-media3-ui = { module = "androidx.media3:media3-ui", version.ref = "androidx-media3" } androidx-preference = { module = "androidx.preference:preference-ktx", version.ref = "androidx-preference" } androidx-recyclerview = { module = "androidx.recyclerview:recyclerview", version.ref = "androidx-recyclerview" } androidx-startup = { module = "androidx.startup:startup-runtime", version.ref = "androidx-startup" } androidx-tv-material = { module = "androidx.tv:tv-material", version.ref = "androidx-tv" } androidx-tvprovider = { module = "androidx.tvprovider:tvprovider", version.ref = "androidx-tvprovider" } androidx-window = { module = "androidx.window:window", version.ref = "androidx-window" } androidx-work-runtime = { module = "androidx.work:work-runtime", version.ref = "androidx-work" } # Dependency Injection koin-android-compat = { module = "io.insert-koin:koin-android-compat", version.ref = "koin" } koin-android-core = { module = "io.insert-koin:koin-android", version.ref = "koin" } koin-androidx-compose = { module = "io.insert-koin:koin-androidx-compose", version.ref = "koin-compose" } koin-androidx-workmanager = { module = "io.insert-koin:koin-androidx-workmanager", version.ref = "koin" } # Media players androidx-media3-exoplayer = { module = "androidx.media3:media3-exoplayer", version.ref = "androidx-media3" } androidx-media3-exoplayer-hls = { module = "androidx.media3:media3-exoplayer-hls", version.ref = "androidx-media3" } jellyfin-androidx-media3-ffmpeg-decoder = { group = "org.jellyfin.media3", name = "media3-ffmpeg-decoder", version.ref = "jellyfin-androidx-media" } # Markwon markwon-core = { module = "io.noties.markwon:core", version.ref = "markwon" } markwon-html = { module = "io.noties.markwon:html", version.ref = "markwon" } # Image utility coil-core = { module = "io.coil-kt.coil3:coil-core", version.ref = "coil" } coil-network-okhttp = { module = "io.coil-kt.coil3:coil-network-okhttp", version.ref = "coil" } coil-gif = { module = "io.coil-kt.coil3:coil-gif", version.ref = "coil" } coil-svg = { module = "io.coil-kt.coil3:coil-svg", version.ref = "coil" } # Crash Reporting acra-core = { module = "ch.acra:acra-core", version.ref = "acra" } acra-toast = { module = "ch.acra:acra-toast", version.ref = "acra" } # Libraries aboutlibraries = { module = "com.mikepenz:aboutlibraries-core", version.ref = "aboutlibraries" } # Logging slf4j-timber = { module = "io.github.unveloper:slf4j-timber", version.ref = "slf4j-timber" } timber = { module = "com.jakewharton.timber:timber", version.ref = "timber" } # Compatibility (desugaring) android-desugar = { module = "com.android.tools:desugar_jdk_libs", version.ref = "android-desugar" } # Test utilities kotest-runner-junit5 = { module = "io.kotest:kotest-runner-junit5", version.ref = "kotest" } kotest-assertions = { module = "io.kotest:kotest-assertions-core", version.ref = "kotest" } mockk = { module = "io.mockk:mockk", version.ref = "mockk" } [bundles] acra = [ "acra-core", "acra-toast", ] androidx-compose = [ "androidx-compose-foundation", "androidx-compose-ui-tooling", "androidx-tv-material" ] androidx-lifecycle = [ "androidx-lifecycle-process", "androidx-lifecycle-runtime", "androidx-lifecycle-service", "androidx-lifecycle-viewmodel", ] coil = [ "coil-core", "coil-network-okhttp", "coil-gif", "coil-svg", ] koin = [ "koin-android-compat", "koin-android-core", "koin-androidx-workmanager", "koin-androidx-compose", ] markwon = [ "markwon-core", "markwon-html", ]