# Geekttrss is a RSS feed reader application on the Android Platform.
#
# Copyright (C) 2017-2025 by Frederic-Charles Barthelery.
#
# This file is part of Geekttrss.
#
# Geekttrss is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Geekttrss is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Geekttrss. If not, see <http://www.gnu.org/licenses/>.
#
[versions]
android-gradle-plugin = "8.13.0"
accompanist = "0.37.3"
android-desugar-jdk = "2.1.5"
androidx-annotation = "1.9.1"
androidx-core = "1.17.0"
androidx-arch-core-testing = "2.2.0"
androidx-appcompat = "1.7.1"
androidx-activity = "1.11.0"
androidx-browser = "1.9.0"
androidx-fragment = "1.8.9"
androidx-constraintlayout = "2.2.1"
androidx-coordinatorlayout = "1.3.0"
androidx-compose-bom = "2025.09.00"
androidx-datastore = "1.1.7"
androidx-hilt-compiler = "1.3.0"
androidx-hilt-navigation-compose = "1.3.0"
androidx-hilt-work = "1.3.0"
androidx-lifecycle = "2.9.3"
androidx-navigation = "2.9.4"
androidx-paging = "3.3.6"
androidx-preferences = "1.2.1"
# stay on 2.6.x until https://issuetracker.google.com/issues/413924560 is fixed
androidx-room = "2.6.1"
androidx-startup = "1.2.0"
androidx-work = "2.10.4"
android-material = "1.13.0"
avdl = "0.0.4"
kotlinx-coroutines = "1.10.2"
kotlinx-datetime = "0.7.1"
kotlinx-serialization = "1.9.0"
dagger = "2.57.1"
license-gradle-plugin = "0.16.1"
materialKolor = "3.0.1"
okio = "3.16.0"
okhttp = "5.1.0"
play-publisher = "3.12.1"
# downgrade protobuf to 4.26.1 because of conflict with firebase
# https://github.com/firebase/firebase-android-sdk/issues/5997
protobuf = "4.26.1"
timber = "5.0.1"
truth = "1.4.4"
turbine = "1.2.1"
mockk = "1.14.5"
firebase-bom = "34.2.0"
google-play-core = "2.1.0"
google-play-core-review = "2.0.2"
gms-play-services-base = "18.8.0"
javax-inject = "1"
ksoup = "0.2.5"
retrofit = "3.0.0"
retrofit-kotlinx-serialization-converter = "1.0.0"
leakcanary = "2.14"
coil = "2.7.0"
geekdroid = "master-SNAPSHOT"
aboutoss = "0.2.0"
kotlin = "2.1.20"
kotlin-ksp = "2.1.20-1.0.31"
uiautomator = "2.3.0"
[plugins]
# these cannot be used for now because it will use multiple classpath and will make play-publisher-plugin fail
android-application = { id = "com.android.application", version.ref = "android-gradle-plugin" }
android-dynamic-feature = { id = "com.android.dynamic-feature", version.ref = "android-gradle-plugin" }
androidx-room = { id = "androidx.room", version.ref = "androidx-room" }
google-gms-google-services = { id = "com.google.gms.google-services", version = "4.4.3" }
# Use our fork of oss-license-plugin to have reproducible builds
# Waiting for feedback on https://github.com/google/play-services-plugins/pull/268
# google-gms-oss-license = { id = "com.google.android.gms.oss-licenses-plugin", version = "0.10.6.1" }
com-geekorum-gms-oss-license = { id = "com.geekorum.gms.oss-licenses-plugin", version = "0.10.6" }
com-geekorum-avdl-flydroid = { id = "com.geekorum.gradle.avdl.providers.flydroid", version.ref = "avdl" }
firebase-crashlytics = { id = "com.google.firebase.crashlytics", version = "3.0.6" }
androidx-navigation-safeargs-kotlin = { id = "androidx.navigation.safeargs.kotlin", version.ref = "androidx-navigation" }
dagger-hilt-android = { id = "dagger.hilt.android.plugin", version.ref = "dagger" }
compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
kotlinx-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
kotlin-ksp = { id = "com.google.devtools.ksp", version.ref = "kotlin-ksp" }
license-gradle-plugin = { id = "com.github.hierynomus.license", version.ref = "license-gradle-plugin" }
gradle-play-publisher = { id = "com.github.triplet.play", version.ref = "play-publisher"}
google-protobuf = { id = "com.google.protobuf", version = "0.9.5" }
[libraries]
# build plugins dependencies
android-gradle-plugin = { module = "com.android.tools.build:gradle", version.ref = "android-gradle-plugin" }
android-gradle-plugin-api = { module = "com.android.tools.build:gradle-api", version.ref = "android-gradle-plugin" }
# app dependencies
accompanist-drawablepainter = { module = "com.google.accompanist:accompanist-drawablepainter", version.ref = "accompanist" }
android-desugar-jdk = { module = "com.android.tools:desugar_jdk_libs", version.ref = "android-desugar-jdk" }
androidx-core = { module = "androidx.core:core-ktx", version.ref = "androidx-core" }
androidx-arch-core-testing = { module = "androidx.arch.core:core-testing", version.ref = "androidx-arch-core-testing" }
androidx-annotation = { module = "androidx.annotation:annotation", version.ref = "androidx-annotation" }
androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidx-appcompat" }
androidx-activity = { module = "androidx.activity:activity-ktx", version.ref = "androidx-activity" }
androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity" }
androidx-datastore = { module = "androidx.datastore:datastore", version.ref = "androidx-datastore"}
androidx-fragment = { module = "androidx.fragment:fragment-ktx", version.ref = "androidx-fragment" }
androidx-fragment-compose = { module = "androidx.fragment:fragment-compose", version.ref = "androidx-fragment" }
androidx-fragment-testing = { module = "androidx.fragment:fragment-testing", version.ref = "androidx-fragment" }
androidx-fragment-testing-manifest = { module = "androidx.fragment:fragment-testing-manifest", version.ref = "androidx-fragment" }
androidx-browser = { module = "androidx.browser:browser", version.ref = "androidx-browser" }
androidx-constraintlayout = { module = "androidx.constraintlayout:constraintlayout", version.ref = "androidx-constraintlayout" }
androidx-coordinatorlayout = { module = "androidx.coordinatorlayout:coordinatorlayout", version.ref = "androidx-coordinatorlayout" }
androidx-compose-bom = { module = "androidx.compose:compose-bom", version.ref = "androidx-compose-bom" }
androidx-compose-foundation = { module = "androidx.compose.foundation:foundation" }
androidx-compose-animation-graphics = { module = "androidx.compose.animation:animation-graphics" }
androidx-compose-material-icons-core = { module = "androidx.compose.material:material-icons-core" }
androidx-compose-material-icons-extended = { module = "androidx.compose.material:material-icons-extended" }
# alpha for M3 Expressive
androidx-compose-material3 = { module = "androidx.compose.material3:material3", version="1.5.0-alpha04" }
androidx-compose-material3-window-sizes = { module = "androidx.compose.material3:material3-window-size-class" }
androidx-compose-runtime-livedata = { module = "androidx.compose.runtime:runtime-livedata" }
androidx-compose-ui = { module = "androidx.compose.ui:ui" }
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-compose-ui-viewbinding = { module = "androidx.compose.ui:ui-viewbinding" }
androidx-hilt-work = { module = "androidx.hilt:hilt-work", version.ref = "androidx-hilt-work" }
androidx-hilt-compiler = { module = "androidx.hilt:hilt-compiler", version.ref = "androidx-hilt-compiler" }
androidx-hilt-navigation-compose = { module = "androidx.hilt:hilt-navigation-compose", version.ref = "androidx-hilt-navigation-compose" }
androidx-lifecycle-livedata-core = { module = "androidx.lifecycle:lifecycle-livedata-core-ktx", version.ref = "androidx-lifecycle" }
androidx-lifecycle-livedata = { module = "androidx.lifecycle:lifecycle-livedata-ktx", version.ref = "androidx-lifecycle" }
androidx-lifecycle-viewmodel = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "androidx-lifecycle" }
androidx-lifecycle-viewmodel-compose = { module = "androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "androidx-lifecycle" }
androidx-lifecycle-viewmodel-savedstate = { module = "androidx.lifecycle:lifecycle-viewmodel-savedstate", version.ref = "androidx-lifecycle" }
androidx-lifecycle-runtime = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "androidx-lifecycle" }
androidx-lifecycle-runtime-compose = { module = "androidx.lifecycle:lifecycle-runtime-compose", version.ref = "androidx-lifecycle" }
androidx-navigation-compose = { module = "androidx.navigation:navigation-compose", version.ref = "androidx-navigation"}
androidx-navigation-dynamic-features-fragment = { module = "androidx.navigation:navigation-dynamic-features-fragment", version.ref = "androidx-navigation"}
androidx-navigation-fragment = { module = "androidx.navigation:navigation-fragment", version.ref = "androidx-navigation"}
androidx-navigation-ui = { module = "androidx.navigation:navigation-ui", version.ref = "androidx-navigation"}
androidx-paging = { module = "androidx.paging:paging-runtime-ktx", version.ref = "androidx-paging" }
androidx-paging-compose = { module = "androidx.paging:paging-compose", version.ref = "androidx-paging" }
androidx-preferences = { module = "androidx.preference:preference-ktx", version.ref = "androidx-preferences"}
androidx-room = { module = "androidx.room:room-ktx", version.ref = "androidx-room"}
androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = "androidx-room"}
androidx-room-runtime = { module = "androidx.room:room-runtime", version.ref = "androidx-room"}
androidx-room-paging = { module = "androidx.room:room-paging", version.ref = "androidx-room"}
androidx-room-testing = { module = "androidx.room:room-testing", version.ref = "androidx-room"}
androidx-startup = { module = "androidx.startup:startup-runtime", version.ref = "androidx-startup" }
androidx-test-uiautomator = { module = "androidx.test.uiautomator:uiautomator", version.ref = "uiautomator" }
androidx-work-runtime = { module = "androidx.work:work-runtime-ktx", version.ref = "androidx-work"}
androidx-work-testing = { module = "androidx.work:work-testing", version.ref = "androidx-work"}
android-material = { module = "com.google.android.material:material", version.ref = "android-material" }
coil = { module = "io.coil-kt:coil", version.ref = "coil" }
coil-compose = { module = "io.coil-kt:coil-compose", version.ref = "coil" }
dagger = { module = "com.google.dagger:dagger", version.ref = "dagger" }
dagger-compiler = { module = "com.google.dagger:dagger-compiler", version.ref = "dagger" }
dagger-hilt-android = { module = "com.google.dagger:hilt-android", version.ref = "dagger" }
dagger-hilt-android-testing = { module = "com.google.dagger:hilt-android-testing", version.ref = "dagger" }
dagger-hilt-compiler = { module = "com.google.dagger:hilt-compiler", version.ref = "dagger" }
geekdroid = { module = "com.geekorum.geekdroid:geekdroid", version.ref = "geekdroid" }
geekdroid-firebase = { module = "com.geekorum.geekdroid:geekdroid-firebase", version.ref = "geekdroid" }
aboutoss-ui-material3 = { module = "com.geekorum.aboutoss:ui-material3", version.ref = "aboutoss" }
kotlinx-coroutines-bom = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-bom", version.ref = "kotlinx-coroutines" }
kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core" }
kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android" }
kotlinx-coroutines-jdk8 = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-jdk8" }
kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test" }
kotlinx-serialization-bom = { module = "org.jetbrains.kotlinx:kotlinx-serialization-bom", version.ref="kotlinx-serialization" }
kotlinx-serialization-core = { module = "org.jetbrains.kotlinx:kotlinx-serialization-core" }
kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json" }
kotlinx-serialization-json-okio = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json-okio", version.ref = "kotlinx-serialization" }
kotlinx-datetime = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version.ref = "kotlinx-datetime" }
javax-inject = { module = "javax.inject:javax.inject", version.ref = "javax-inject" }
ksoup = {module = "com.fleeksoft.ksoup:ksoup", version.ref = "ksoup" }
leakcanary-android = { module = "com.squareup.leakcanary:leakcanary-android", version.ref = "leakcanary" }
materialKolor = { module = "com.materialkolor:material-kolor", version.ref = "materialKolor" }
okio = { module = "com.squareup.okio:okio", version.ref = "okio" }
okhttp-bom = { module = "com.squareup.okhttp3:okhttp-bom", version.ref = "okhttp"}
okhttp = { module = "com.squareup.okhttp3:okhttp" }
okhttp-logging-interceptor = { module = "com.squareup.okhttp3:logging-interceptor" }
okhttp-mockwebserver = { module = "com.squareup.okhttp3:mockwebserver" }
protobuf-kotlin-lite = { module = "com.google.protobuf:protobuf-kotlin-lite", version.ref = "protobuf" }
protobuf-protoc = { module = "com.google.protobuf:protoc", version.ref = "protobuf" }
retrofit = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit" }
retrofit-kotlinx-serialization-converter = { module = "com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter", version.ref = "retrofit-kotlinx-serialization-converter" }
timber = { module = "com.jakewharton.timber:timber", version.ref = "timber" }
truth = { module = "com.google.truth:truth", version.ref = "truth" }
turbine = { module = "app.cash.turbine:turbine", version.ref = "turbine" }
mockk = { module = "io.mockk:mockk", version.ref = "mockk" }
# Non free
firebase-bom = { module = "com.google.firebase:firebase-bom", version.ref = "firebase-bom"}
firebase-crashlytics = { module = "com.google.firebase:firebase-crashlytics" }
google-play-app-update = { module = "com.google.android.play:app-update-ktx", version.ref = "google-play-core"}
google-play-feature-delivery = { module = "com.google.android.play:feature-delivery-ktx", version.ref = "google-play-core"}
google-play-review = { module = "com.google.android.play:review-ktx", version.ref = "google-play-core-review" }
gms-play-services-base = { module = "com.google.android.gms:play-services-base", version.ref = "gms-play-services-base" }