[versions] # AGP android-gradle-plugin = "8.10.0" # Keep lint version in sync lint = "31.10.0" python-envs-plugin = "0.0.31" maven-ant-tasks = "2.1.3" androidsvg = "1.4" zxing = "3.5.3" disklrucache = "2.0.2" leakcanary = "2.14" # AndroidX versions activity = "1.10.1" annotation = "1.9.1" appcompat = "1.7.0" arch = "2.2.0" autofill = "1.1.0" benchmark = "1.3.4" biometric = "1.1.0" browser = "1.8.0" cardview = "1.0.0" collection = "1.5.0" compose-bom = "2025.02.00" concurrent = "1.2.0" constraintlayout = "2.2.1" constraintlayout-compose = "1.1.1" coordinatorlayout = "1.3.0" core = "1.16.0" core-splashscreen = "1.0.1" datastore = "1.1.7" drawerlayout = "1.2.0" fragment = "1.8.7" lifecycle = "2.9.0" localbroadcastmanager = "1.0.0" media = "1.7.0" navigation = "2.9.0" paging = "3.3.6" palette = "1.0.0" preferences = "1.2.1" profileinstaller = "1.4.0" recyclerview = "1.4.0" room = "2.7.1" savedstate = "1.3.0" swiperefreshlayout = "1.1.0" transition = "1.6.0" viewpager2 = "1.1.0" work = "2.10.1" # Google versions accompanist = "0.37.3" desugar-jdk-libs = "2.1.5" firebase-messaging = "24.1.1" installreferrer = "2.2" material = "1.12.0" osslicenses-plugin = "0.10.6" play-review = "2.0.2" play-services-ads-id = "18.2.0" play-services-base = "18.7.0" play-services-fido = "21.2.0" protobuf = "4.30.2" # Keep Protobuf in sync with the version used by AppServices. # JNA jna = "5.14.0" # Don't update until Android 5/6 support is dropped # Gradle plugins jacoco = "0.8.13" kotlin-dsl = "5.2.0" protobuf-plugin = "0.9.5" scip-java = "0.10.4" semanticdb-kotlinc = "0.5.0" # Kotlin versions coroutines = "1.10.2" kotlin = "2.1.21" # remember to change ksp-plugin ksp-plugin = "2.1.21-2.0.1" serialization = "1.8.1" # Linter versions detekt = "1.23.8" ktlint = "1.6.0" spotless = "7.0.2" # Mozilla versions apilint = "0.5.4" mozilla-glean = "64.3.1" # Testing versions androidx-test = "1.6.1" androidx-test-espresso = "3.6.1" androidx-test-ext = "1.2.1" androidx-test-monitor = "1.7.2" androidx-test-orchestrator = "1.5.1" androidx-test-runner = "1.6.1" androidx-test-uiautomator = "2.3.0" junit = "5.11.4" mockito = "5.17.0" mockk = "1.14.2" robolectric = "4.14.1" # Third party library versions adjust = "5.4.0" okhttp = "4.12.0" okio = "3.11.0" sentry = "8.9.0" commons-exec = "1.3" tomlj = "1.1.0" [libraries] kotlin-coroutines = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-android", version.ref = "coroutines" } kotlin-reflect = { group = "org.jetbrains.kotlin", name = "kotlin-reflect", version.ref = "kotlin" } kotlin-json = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version.ref = "serialization" } junit-api = { group = "org.junit.jupiter", name = "junit-jupiter-api", version.ref = "junit" } junit-engine = { group = "org.junit.jupiter", name = "junit-jupiter-engine", version.ref = "junit" } junit-params = { group = "org.junit.jupiter", name = "junit-jupiter-params", version.ref = "junit" } junit-vintage = { group = "org.junit.vintage", name = "junit-vintage-engine", version.ref = "junit" } testing-robolectric = { group = "org.robolectric", name = "robolectric", version.ref = "robolectric" } testing-mockito = { group = "org.mockito", name = "mockito-core", version.ref = "mockito" } testing-mockk = { group = "io.mockk", name = "mockk", version.ref = "mockk" } testing-mockk-android = { group = "io.mockk", name = "mockk-android", version.ref = "mockk" } testing-mockwebserver = { group = "com.squareup.okhttp3", name = "mockwebserver", version.ref = "okhttp" } testing-coroutines = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-test", version.ref = "coroutines" } testing-maven-ant-tasks = { group = "org.apache.maven", name = "maven-ant-tasks", version.ref = "maven-ant-tasks" } testing-leakcanary = { group = "com.squareup.leakcanary", name = "leakcanary-android-instrumentation", version.ref = "leakcanary" } accompanist-drawablepainter = { group = "com.google.accompanist", name = "accompanist-drawablepainter", version.ref = "accompanist" } androidx-activity = { group = "androidx.activity", name = "activity", version.ref = "activity" } androidx-activity-ktx = { group = "androidx.activity", name = "activity-ktx", version.ref = "activity" } androidx-annotation = { group = "androidx.annotation", name = "annotation", version.ref = "annotation" } androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" } androidx-arch-core-common = { group = "androidx.arch.core", name = "core-common", version.ref = "arch" } androidx-arch-core-testing = { group = "androidx.arch.core", name = "core-testing", version.ref = "arch" } androidx-autofill = { group = "androidx.autofill", name = "autofill", version.ref = "autofill" } androidx-benchmark-junit4 = { group = "androidx.benchmark", name = "benchmark-junit4", version.ref = "benchmark" } androidx-benchmark-macro-junit4 = { group = "androidx.benchmark", name = "benchmark-macro-junit4", version.ref = "benchmark" } androidx-biometric = { group = "androidx.biometric", name = "biometric", version.ref = "biometric" } androidx-browser = { group = "androidx.browser", name = "browser", version.ref = "browser" } androidx-cardview = { group = "androidx.cardview", name = "cardview", version.ref = "cardview" } androidx-collection = { group = "androidx.collection", name = "collection", version.ref = "collection" } androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "compose-bom" } androidx-compose-animation = { group = "androidx.compose.animation", name = "animation" } androidx-compose-foundation = { group = "androidx.compose.foundation", name = "foundation" } androidx-compose-material = { group = "androidx.compose.material", name = "material" } androidx-compose-material-icons = { group = "androidx.compose.material", name = "material-icons-core" } androidx-compose-runtime-livedata = { group = "androidx.compose.runtime", name = "runtime-livedata" } androidx-compose-runtime-saveable = { group = "androidx.compose.runtime", name = "runtime-saveable" } androidx-compose-ui = { group = "androidx.compose.ui", name = "ui" } androidx-compose-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" } androidx-compose-ui-test = { group = "androidx.compose.ui", name = "ui-test-junit4" } androidx-compose-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } androidx-compose-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" } androidx-compose-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" } androidx-concurrent = { group = "androidx.concurrent", name = "concurrent-futures-ktx", version.ref = "concurrent" } androidx-constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "constraintlayout" } androidx-constraintlayout-compose = { group = "androidx.constraintlayout", name = "constraintlayout-compose", version.ref = "constraintlayout-compose" } androidx-coordinatorlayout = { group = "androidx.coordinatorlayout", name = "coordinatorlayout", version.ref = "coordinatorlayout" } androidx-core = { group = "androidx.core", name = "core", version.ref = "core" } androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "core" } androidx-core-splashscreen = { group = "androidx.core", name = "core-splashscreen", version.ref = "core-splashscreen" } androidx-datastore = { group = "androidx.datastore", name = "datastore", version.ref = "datastore" } androidx-datastore-preferences = { group = "androidx.datastore", name = "datastore-preferences", version.ref = "datastore" } androidx-drawerlayout = { group = "androidx.drawerlayout", name = "drawerlayout", version.ref = "drawerlayout" } androidx-fragment = { group = "androidx.fragment", name = "fragment", version.ref = "fragment" } androidx-lifecycle-common = { group = "androidx.lifecycle", name = "lifecycle-common", version.ref = "lifecycle" } androidx-lifecycle-compose = { group = "androidx.lifecycle", name = "lifecycle-runtime-compose", version.ref = "lifecycle" } androidx-lifecycle-livedata = { group = "androidx.lifecycle", name = "lifecycle-livedata-ktx", version.ref = "lifecycle" } androidx-lifecycle-process = { group = "androidx.lifecycle", name = "lifecycle-process", version.ref = "lifecycle" } androidx-lifecycle-runtime = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "lifecycle" } androidx-lifecycle-service = { group = "androidx.lifecycle", name = "lifecycle-service", version.ref = "lifecycle" } androidx-lifecycle-viewmodel = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-ktx", version.ref = "lifecycle" } androidx-localbroadcastmanager = { group = "androidx.localbroadcastmanager", name = "localbroadcastmanager", version.ref = "localbroadcastmanager" } androidx-media = { group = "androidx.media", name = "media", version.ref = "media" } androidx-navigation-compose = { group = "androidx.navigation", name = "navigation-compose", version.ref = "navigation" } androidx-navigation-fragment = { group = "androidx.navigation", name = "navigation-fragment-ktx", version.ref = "navigation" } androidx-navigation-safeargs = { group = "androidx.navigation", name = "navigation-safe-args-gradle-plugin", version.ref = "navigation" } androidx-navigation-ui = { group = "androidx.navigation", name = "navigation-ui", version.ref = "navigation" } androidx-paging = { group = "androidx.paging", name = "paging-runtime", version.ref = "paging" } androidx-palette = { group = "androidx.palette", name = "palette-ktx", version.ref = "palette" } androidx-preferences = { group = "androidx.preference", name = "preference", version.ref = "preferences" } androidx-profileinstaller = { group = "androidx.profileinstaller", name = "profileinstaller", version.ref = "profileinstaller" } androidx-recyclerview = { group = "androidx.recyclerview", name = "recyclerview", version.ref = "recyclerview" } androidx-room-compiler = { group = "androidx.room", name = "room-compiler", version.ref = "room" } androidx-room-runtime = { group = "androidx.room", name = "room-ktx", version.ref = "room" } androidx-room-testing = { group = "androidx.room", name = "room-testing", version.ref = "room" } androidx-savedstate = { group = "androidx.savedstate", name = "savedstate", version.ref = "savedstate" } androidx-swiperefreshlayout = { group = "androidx.swiperefreshlayout", name = "swiperefreshlayout", version.ref = "swiperefreshlayout" } androidx-transition = { group = "androidx.transition", name = "transition", version.ref = "transition" } androidx-viewpager2 = { group = "androidx.viewpager2", name = "viewpager2", version.ref = "viewpager2" } androidx-work-runtime = { group = "androidx.work", name = "work-runtime", version.ref = "work" } androidx-work-testing = { group = "androidx.work", name = "work-testing", version.ref = "work" } androidx-espresso-contrib = { group = "androidx.test.espresso", name = "espresso-contrib", version.ref = "androidx-test-espresso" } androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "androidx-test-espresso" } androidx-espresso-idling-resource = { group = "androidx.test.espresso", name = "espresso-idling-resource", version.ref = "androidx-test-espresso" } androidx-espresso-intents = { group = "androidx.test.espresso", name = "espresso-intents", version.ref = "androidx-test-espresso" } androidx-espresso-web = { group = "androidx.test.espresso", name = "espresso-web", version.ref = "androidx-test-espresso" } androidx-test-core = { group = "androidx.test", name = "core-ktx", version.ref = "androidx-test" } androidx-test-junit = { group = "androidx.test.ext", name = "junit-ktx", version.ref = "androidx-test-ext" } androidx-test-monitor = { group = "androidx.test", name = "monitor", version.ref = "androidx-test-monitor" } androidx-test-orchestrator = { group = "androidx.test", name = "orchestrator", version.ref = "androidx-test-orchestrator" } androidx-test-runner = { group = "androidx.test", name = "runner", version.ref = "androidx-test-runner" } androidx-test-rules = { group = "androidx.test", name = "rules", version.ref = "androidx-test" } androidx-test-uiautomator = { group = "androidx.test.uiautomator", name = "uiautomator", version.ref = "androidx-test-uiautomator" } google-material = { group = "com.google.android.material", name = "material", version.ref = "material" } plugin-serialization = { group = "org.jetbrains.kotlin.plugin.serialization", name = "org.jetbrains.kotlin.plugin.serialization.gradle.plugin", version.ref = "kotlin" } leakcanary = { group = "com.squareup.leakcanary", name = "leakcanary-android", version.ref = "leakcanary" } tools-androidgradle = { group = "com.android.tools.build", name = "gradle", version.ref = "android-gradle-plugin" } tools-benchmarkgradle = { group = "androidx.benchmark", name = "benchmark-gradle-plugin", version.ref = "benchmark" } tools-lint = { group = "com.android.tools.lint", name = "lint", version.ref = "lint" } tools-lintapi = { group = "com.android.tools.lint", name = "lint-api", version.ref = "lint" } tools-lintchecks = { group = "com.android.tools.lint", name = "lint-checks", version.ref = "lint" } tools-linttests = { group = "com.android.tools.lint", name = "lint-tests", version.ref = "lint" } tools-detekt-api = { group = "io.gitlab.arturbosch.detekt", name = "detekt-api", version.ref = "detekt" } tools-detekt-test = { group = "io.gitlab.arturbosch.detekt", name = "detekt-test", version.ref = "detekt" } mozilla-glean = { group = "org.mozilla.telemetry", name = "glean", version.ref = "mozilla-glean" } mozilla-glean-forUnitTests = { group = "org.mozilla.telemetry", name = "glean-native-forUnitTests", version.ref = "mozilla-glean" } thirdparty-okhttp = { group = "com.squareup.okhttp3", name = "okhttp", version.ref = "okhttp" } thirdparty-okhttp-urlconnection = { group = "com.squareup.okhttp3", name = "okhttp-urlconnection", version.ref = "okhttp" } thirdparty-okio = { group = "com.squareup.okio", name = "okio", version.ref = "okio" } thirdparty-sentry = { group = "io.sentry", name = "sentry-android", version.ref = "sentry" } thirdparty-zxing = { group = "com.google.zxing", name = "core", version.ref = "zxing" } thirdparty-disklrucache = { group = "com.jakewharton", name = "disklrucache", version.ref = "disklrucache" } thirdparty-androidsvg = { group = "com.caverock", name = "androidsvg-aar", version.ref = "androidsvg" } desugar-jdk-libs = { group = "com.android.tools", name = "desugar_jdk_libs", version.ref = "desugar-jdk-libs" } firebase-messaging = { group = "com.google.firebase", name = "firebase-messaging", version.ref = "firebase-messaging" } installreferrer = { group = "com.android.installreferrer", name = "installreferrer", version.ref = "installreferrer" } osslicenses-plugin = { group = "com.google.android.gms", name = "oss-licenses-plugin", version.ref = "osslicenses-plugin" } play-review = { group = "com.google.android.play", name = "review", version.ref = "play-review" } play-review-ktx = { group = "com.google.android.play", name = "review-ktx", version.ref = "play-review" } play-services-ads-id = { group = "com.google.android.gms", name = "play-services-ads-identifier", version.ref = "play-services-ads-id" } play-services-base = { group = "com.google.android.gms", name = "play-services-base", version.ref = "play-services-base" } play-services-fido = { group = "com.google.android.gms", name = "play-services-fido", version.ref = "play-services-fido" } protobuf-compiler = { group = "com.google.protobuf", name = "protoc", version.ref = "protobuf" } protobuf-javalite = { group = "com.google.protobuf", name = "protobuf-javalite", version.ref = "protobuf" } # JNA for app-services. jna = { group = "net.java.dev.jna", name = "jna", version.ref = "jna" } # Gradle plugins semanticdb-java = { group = "com.sourcegraph", name = "semanticdb-javac", version.ref = "scip-java" } semanticdb-kotlin = { group = "com.github.mozsearch", name = "semanticdb-kotlinc", version.ref = "semanticdb-kotlinc" } glean-gradle-plugin = { group = "org.mozilla.telemetry", name = "glean-gradle-plugin", version.ref = "mozilla-glean" } kotlin-annotations-jvm = { group = "org.jetbrains.kotlin", name = "kotlin-annotations-jvm", version.ref = "kotlin" } ktlint = { group = "com.pinterest.ktlint", name = "ktlint-cli", version.ref = "ktlint" } # Third party library versions adjust = { group = "com.adjust.sdk", name = "adjust-android", version.ref = "adjust" } apilint = { group = "org.mozilla.apilint", name = "apilint", version.ref = "apilint" } commons-exec = { group = "org.apache.commons", name = "commons-exec", version.ref = "commons-exec" } spotless = { group = "com.diffplug.spotless", name = "spotless-plugin-gradle", version.ref = "spotless" } tomlj = { group = "org.tomlj", name = "tomlj", version.ref = "tomlj" } [plugins] detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" } kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } kotlin-dsl = { id = "org.gradle.kotlin.kotlin-dsl", version.ref = "kotlin-dsl" } ksp = { id = "com.google.devtools.ksp", version.ref = "ksp-plugin" } python-envs-plugin = {id = "com.jetbrains.python.envs", version.ref = "python-envs-plugin"} protobuf-plugin = {id = "com.google.protobuf", version.ref = "protobuf-plugin"}