[versions] android-gradle-plugin = "8.13.2" google-services-plugin = "4.4.4" proton-core-plugin = "1.3.0" sentry-gradle-plugin = "5.12.2" accompanist-webview = "0.30.1" accompanist-permissions = "0.37.3" desugar-jdk-libs = "2.1.5" android-billing = "8.3.0" androidx-activity = "1.12.0" androidx-annotation = "1.9.1" androidx-appcompat = "1.7.1" androidx-biometrics = "1.4.0-alpha05" androidx-compose = "1.10.6" androidx-compose-animation = "1.10.6" androidx-core = "1.17.0" androidx-compose-tracing = "1.9.3" androidx-constraintlayout-compose = "1.1.1" androidx-customview = "1.2.0" androidx-customview-poolingcontainer = "1.1.0" androidx-datastore = "1.2.1" androidx-hilt = "1.3.0" androidx-lifecycle = "2.10.0" androidx-material-icons-core = "1.7.8" androidx-material3 = "1.4.0" androidx-navigation = "2.9.6" androidx-paging = "3.3.6" androidx-paging-compose = "3.3.6" androidx-perfetto = "1.0.1" androidx-profile-installer = "1.4.1" androidx-room = "2.8.4" androidx-sqlite = "2.6.2" androidx-startup-runtime = "1.2.0" androidx-splashscreen = "1.2.0" androidx-test-androidjunit = "1.3.0" androidx-test-core = "1.7.0" androidx-test-macrobenchmark = "1.4.1" androidx-test-monitor = "1.8.0" androidx-test-runner = "1.7.0" androidx-test-rules = "1.7.0" androidx-test-orchestrator = "1.6.1" androidx-test-espresso = "3.7.0" androidx-test-uiautomator = "2.3.0" androidx-tracing = "1.3.0" androidx-webkit = "1.15.0" androidx-work = "2.11.2" arrow-core = "2.2.0" # 2.2.1.1 has KT 2.3.0 as base cash-turbine = "1.2.1" coil = "2.7.0" dagger = "2.58" detekt = "1.23.8" firebase-bom = "34.7.0" guava = "33.5.0-jre" haze = "1.6.10" # 1.7.1 requires compileSdk=36 timber = "5.0.1" javax-inject = "1" jna = "5.18.1" junit = "4.13.2" ksp-symbol-processing-api = "2.3.6" kotlin = "2.3.20" kotlin-compile-testing = "0.11.1" kotlinx-coroutines = "1.10.2" kotlinx-datetime = "0.7.1" kotlinx-immutable-collections = "0.4.0" kotlinx-serialization = "1.9.0" lottie = "6.7.1" material = "1.13.0" mockk = "1.14.11" paparazzi = "2.0.0-alpha02" proton-core = "36.4.2" proton-rust-core = "0.169.41" proton-android-payment = "1.5.0" kotlinpoet-ksp = "2.2.0" leakcanary = "2.14" okhttp = "5.3.2" play-services = "18.9.0" play-installreferrer = "2.2" play-review = "2.0.2" sentry = "8.37.1" zxing-embedded = "4.3.0" [plugins] compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } google-devtools-ksp = { id = "com.google.devtools.ksp", version.ref = "ksp-symbol-processing-api" } kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } proton-core-detekt = { id = "me.proton.core.gradle-plugins.detekt", version.ref = "proton-core-plugin" } proton-core-coverage = { id = "me.proton.core.gradle-plugins.coverage", version.ref = "proton-core-plugin" } proton-core-coverage-config = { id = "me.proton.core.gradle-plugins.coverage-config", version.ref = "proton-core-plugin" } proton-core-global-coverage = { id = "me.proton.core.gradle-plugins.global-coverage", version.ref = "proton-core-plugin" } [libraries] # Classpath dependencies android-tools-build = { module = "com.android.tools.build:gradle", version.ref = "android-gradle-plugin" } kotlin-gradle = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" } hilt-android-gradle = { module = "com.google.dagger:hilt-android-gradle-plugin", version.ref = "dagger" } google-services = { module = "com.google.gms:google-services", version.ref = "google-services-plugin" } sentry-gradle = { module = "io.sentry:sentry-android-gradle-plugin", version.ref = "sentry-gradle-plugin" } paparazzi-plugin = { module = "app.cash.paparazzi:paparazzi-gradle-plugin", version.ref = "paparazzi" } # Standard dependencies accompanist-webview = { module = "com.google.accompanist:accompanist-webview", version.ref = "accompanist-webview" } accompanist-permissions = { module = "com.google.accompanist:accompanist-permissions", version.ref = "accompanist-permissions" } android-billing = { module = "com.android.billingclient:billing-ktx", version.ref = "android-billing" } android-tools-desugarJdkLibs = { module = "com.android.tools:desugar_jdk_libs", version.ref = "desugar-jdk-libs" } android-material = { module = "com.google.android.material:material", version.ref = "material" } android-material-icons-core = { module = "androidx.compose.material:material-icons-core", version.ref = "androidx-material-icons-core" } android-material-icons-extended = { module = "androidx.compose.material:material-icons-extended", version.ref = "androidx-material-icons-core" } androidx-activity-ktx = { module = "androidx.activity:activity", version.ref = "androidx-activity" } androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity" } androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidx-appcompat" } androidx-annotation = { module = "androidx.annotation:annotation", version.ref = "androidx-annotation" } androidx-constraintlayout-compose = { module = "androidx.constraintlayout:constraintlayout-compose", version.ref = "androidx-constraintlayout-compose" } androidx-compose-animation = { group = "androidx.compose.animation", name = "animation", version.ref = "androidx-compose-animation" } androidx-compose-foundation = { module = "androidx.compose.foundation:foundation", version.ref = "androidx-compose" } androidx-compose-foundation-layout = { module = "androidx.compose.foundation:foundation-layout", version.ref = "androidx-compose" } androidx-compose-material = { module = "androidx.compose.material:material", version.ref = "androidx-compose" } androidx-compose-material3 = { module = "androidx.compose.material3:material3", version.ref = "androidx-material3" } androidx-compose-runtime = { module = "androidx.compose.runtime:runtime", version.ref = "androidx-compose" } androidx-compose-runtime-livedata = { module = "androidx.compose.runtime:runtime-livedata", version.ref = "androidx-compose" } androidx-compose-ui = { module = "androidx.compose.ui:ui", version.ref = "androidx-compose" } androidx-compose-ui-tooling = { module = "androidx.compose.ui:ui-tooling", version.ref = "androidx-compose" } androidx-compose-ui-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview", version.ref = "androidx-compose" } androidx-compose-ui-test = { module = "androidx.compose.ui:ui-test", version.ref = "androidx-compose" } androidx-compose-ui-test-junit4 = { module = "androidx.compose.ui:ui-test-junit4", version.ref = "androidx-compose" } androidx-compose-ui-test-manifest = { module = "androidx.compose.ui:ui-test-manifest", version.ref = "androidx-compose" } androidx-core-ktx = { module = "androidx.core:core-ktx", version.ref = "androidx-core" } androidx-core-splashscreen = { module = "androidx.core:core-splashscreen", version.ref = "androidx-splashscreen" } androidx-customview = { module = "androidx.customview:customview", version.ref = "androidx-customview" } androidx-customview-poolingcontainer = { module = "androidx.customview:customview-poolingcontainer", version.ref = "androidx-customview-poolingcontainer" } androidx-datastore-preferences = { module = "androidx.datastore:datastore-preferences", version.ref = "androidx-datastore" } androidx-hilt-compiler = { module = "androidx.hilt:hilt-compiler", version.ref = "androidx-hilt" } androidx-hilt-lifecycle-viewmodel = { module = "androidx.hilt:hilt-lifecycle-viewmodel-compose", version.ref = "androidx-hilt" } androidx-hilt-work = { module = "androidx.hilt:hilt-work", version.ref = "androidx-hilt" } androidx-lifecycle-process = { module = "androidx.lifecycle:lifecycle-process", version.ref = "androidx-lifecycle" } androidx-lifecycle-runtime-testing = { module = "androidx.lifecycle:lifecycle-runtime-testing", version.ref = "androidx-lifecycle" } androidx-biometrics = { module = "androidx.biometric:biometric", version.ref = "androidx-biometrics" } androidx-navigation-compose = { module = "androidx.navigation:navigation-compose", version.ref = "androidx-navigation" } androidx-paging-runtime = { module = "androidx.paging:paging-runtime", version.ref = "androidx-paging" } androidx-paging-common = { module = "androidx.paging:paging-common", version.ref = "androidx-paging" } androidx-paging-testing = { module = "androidx.paging:paging-testing", version.ref = "androidx-paging-compose" } androidx-paging-compose = { module = "androidx.paging:paging-compose", version.ref = "androidx-paging-compose" } androidx-profileinstaller = { module = "androidx.profileinstaller:profileinstaller", version.ref = "androidx-profile-installer" } androidx-sqlite = { module = "androidx.sqlite:sqlite-framework", version.ref = "androidx-sqlite" } androidx-room-compiler = { module = "androidx.room:room-compiler-processing", version.ref = "androidx-room" } # See https://github.com/google/dagger/issues/4693 androidx-startup-runtime = { group = "androidx.startup", name = "startup-runtime", version.ref = "androidx-startup-runtime" } androidx-test-androidjunit = { module = "androidx.test.ext:junit", version.ref = "androidx-test-androidjunit" } androidx-test-core = { module = "androidx.test:core", version.ref = "androidx-test-core" } androidx-test-core-ktx = { module = "androidx.test:core-ktx", version.ref = "androidx-test-core" } androidx-test-espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "androidx-test-espresso" } androidx-test-espresso-web = { module = "androidx.test.espresso:espresso-web", version.ref = "androidx-test-espresso" } androidx-test-espresso-intents = { module = "androidx.test.espresso:espresso-intents", version.ref = "androidx-test-espresso" } androidx-test-macrobenchmark = { module = "androidx.benchmark:benchmark-macro-junit4", version.ref = "androidx-test-macrobenchmark" } androidx-test-orchestrator = { module = "androidx.test:orchestrator", version.ref = "androidx-test-orchestrator" } androidx-test-monitor = { module = "androidx.test:monitor", version.ref = "androidx-test-monitor" } androidx-test-runner = { module = "androidx.test:runner", version.ref = "androidx-test-runner" } androidx-test-rules = { module = "androidx.test:rules", version.ref = "androidx-test-rules" } androidx-test-uiautomator = { module = "androidx.test.uiautomator:uiautomator", version.ref = "androidx-test-uiautomator" } androidx-tracing = { module = "androidx.tracing:tracing", version.ref = "androidx-tracing" } androidx-tracing-compose-runtime = { module = "androidx.compose.runtime:runtime-tracing", version.ref = "androidx-compose-tracing" } androidx-tracing-perfetto = { module = "androidx.tracing:tracing-perfetto", version.ref = "androidx-perfetto" } androidx-tracing-perfetto-binary = { module = "androidx.tracing:tracing-perfetto-binary", version.ref = "androidx-perfetto" } androidx-webkit = { module = "androidx.webkit:webkit", version.ref = "androidx-webkit" } androidx-work-runtimeKtx = { module = "androidx.work:work-runtime-ktx", version.ref = "androidx-work" } arrow-core = { module = "io.arrow-kt:arrow-core", version.ref = "arrow-core" } arrow-coroutines = { module = "io.arrow-kt:arrow-fx-coroutines", version.ref = "arrow-core" } cash-turbine = { module = "app.cash.turbine:turbine", version.ref = "cash-turbine" } coil-compose = { module = "io.coil-kt:coil-compose", version.ref = "coil" } 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-core = { module = "com.google.dagger:hilt-core", version.ref = "dagger" } dagger-hilt-compiler = { module = "com.google.dagger:hilt-compiler", version.ref = "dagger" } detekt-api = { module = "io.gitlab.arturbosch.detekt:detekt-api", version.ref = "detekt" } detekt-test = { module = "io.gitlab.arturbosch.detekt:detekt-test", version.ref = "detekt" } firebase-bom = { module = "com.google.firebase:firebase-bom", version.ref = "firebase-bom" } firebase-messaging = { module = "com.google.firebase:firebase-messaging" } javax-inject = { module = "javax.inject:javax.inject", version.ref = "javax-inject" } java-jna = { module = "net.java.dev.jna:jna", version.ref = "jna" } guava = { module = "com.google.guava:guava", version.ref = "guava" } haze = { module = "dev.chrisbanes.haze:haze", version.ref = "haze" } junit = { module = "junit:junit", version.ref = "junit" } kotlinCompileTesting = { module = "dev.zacsweers.kctfork:ksp", version.ref = "kotlin-compile-testing" } kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test", version.ref = "kotlin" } kotlin-test-junit = { module = "org.jetbrains.kotlin:kotlin-test-junit", version.ref = "kotlin" } kotlin-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinx-coroutines" } kotlin-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kotlinx-coroutines" } kotlin-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinx-serialization" } kotlinx-datetime = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version.ref = "kotlinx-datetime" } kotlinx-immutableCollections = { module = "org.jetbrains.kotlinx:kotlinx-collections-immutable", version.ref = "kotlinx-immutable-collections" } ksp-symbolProcessingApi = { module = "com.google.devtools.ksp:symbol-processing-api", version.ref = "ksp-symbol-processing-api" } kotlinpoet-ksp = { module = "com.squareup:kotlinpoet-ksp", version.ref = "kotlinpoet-ksp" } leakcanary-android = { module = "com.squareup.leakcanary:leakcanary-android", version.ref = "leakcanary" } lottie-compose = { module = "com.airbnb.android:lottie-compose", version.ref = "lottie" } timber = { module = "com.jakewharton.timber:timber", version.ref = "timber" } mockk = { module = "io.mockk:mockk", version.ref = "mockk" } mockk-android = { module = "io.mockk:mockk-android", version.ref = "mockk" } mockwebserver = { module = "com.squareup.okhttp3:mockwebserver", version.ref = "okhttp" } okhttp = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" } okhttp-tls = { module = "com.squareup.okhttp3:okhttp-tls", version.ref = "okhttp" } sentry-compose = { module = "io.sentry:sentry-compose", version.ref = "sentry" } sentry = { module = "io.sentry:sentry", version.ref = "sentry" } play-services = { module = "com.google.android.gms:play-services-base", version.ref = "play-services" } play-installreferrer = { module = "com.android.installreferrer:installreferrer", version.ref = "play-installreferrer" } play-review-core = { module = "com.google.android.play:review", version.ref = "play-review" } play-review-ext = { module = "com.google.android.play:review-ktx", version.ref = "play-review" } plumber = { module = "com.squareup.leakcanary:plumber-android", version.ref = "leakcanary" } zxing-embedded = { module = "com.journeyapps:zxing-android-embedded", version.ref = "zxing-embedded" } paparazzi = { group = "app.cash.paparazzi", name = "paparazzi", version.ref = "paparazzi" } # Proton Core libraries proton-core-auth-domain = { module = "me.proton.core:auth-domain", version.ref = "proton-core" } proton-core-account-domain = { module = "me.proton.core:account-domain", version.ref = "proton-core" } proton-core-biometric = { module = "me.proton.core:biometric", version.ref = "proton-core" } proton-core-challenge-data = { module = "me.proton.core:challenge-data", version.ref = "proton-core" } proton-core-challenge-domain = { module = "me.proton.core:challenge-domain", version.ref = "proton-core" } proton-core-challenge-presentation = { module = "me.proton.core:challenge-presentation-compose", version.ref = "proton-core" } proton-core-fido-domain = { module = "me.proton.core:auth-fido-domain", version.ref = "proton-core" } proton-core-fido-play = { module = "me.proton.core:auth-fido-play", version.ref = "proton-core" } proton-core-featureFlag-domain = { module = "me.proton.core:feature-flag-domain", version.ref = "proton-core" } proton-core-crypto = { module = "me.proton.core:crypto", version.ref = "proton-core" } proton-core-domain = { module = "me.proton.core:domain", version.ref = "proton-core" } proton-core-eventManager-domain = { module = "me.proton.core:event-manager-domain", version.ref = "proton-core" } proton-core-key-domain = { module = "me.proton.core:key-domain", version.ref = "proton-core" } proton-core-mailSettings-domain = { module = "me.proton.core:mail-settings-domain", version.ref = "proton-core" } proton-core-network-domain = { module = "me.proton.core:network-domain", version.ref = "proton-core" } proton-core-pass-validator-domain = { module = "me.proton.core:pass-validator-domain", version.ref = "proton-core" } proton-core-pass-validator-presentation = { module = "me.proton.core:pass-validator-presentation", version.ref = "proton-core" } proton-core-presentation = { module = "me.proton.core:presentation", version.ref = "proton-core" } proton-core-presentationCompose = { module = "me.proton.core:presentation-compose", version.ref = "proton-core" } proton-core-proguardRules = { module = "me.proton.core:proguard-rules", version.ref = "proton-core" } proton-core-user-data = { module = "me.proton.core:user-data", version.ref = "proton-core" } proton-core-user-domain = { module = "me.proton.core:user-domain", version.ref = "proton-core" } proton-core-utilKotlin = { module = "me.proton.core:util-kotlin", version.ref = "proton-core" } proton-core-utilAndroidDateTime = { module = "me.proton.core:util-android-datetime", version.ref = "proton-core" } proton-core-utilAndroidDagger = { module = "me.proton.core:util-android-dagger", version.ref = "proton-core" } proton-core-utilAndroidStrictMode = { module = "me.proton.core:util-android-strict-mode", version.ref = "proton-core" } proton-core-utilAndroidDevice = { module = "me.proton.core:util-android-device", version.ref = "proton-core" } proton-core-testAndroid = { module = "me.proton.core:test-android", version.ref = "proton-core" } proton-core-testKotlin = { module = "me.proton.core:test-kotlin", version.ref = "proton-core" } proton-core-testAndroidInstrumented = { module = "me.proton.core:test-android-instrumented", version.ref = "proton-core" } proton-rust-core = { module = "me.proton.mail.common:lib", version.ref = "proton-rust-core" } proton-android-payment = { module = "me.proton.android.payment:payment", version.ref = "proton-android-payment" } proton-android-payment-billing-google = { module = "me.proton.android.payment:payment-billing-google", version.ref = "proton-android-payment" } [bundles] appLibs = [ "androidx-activity-ktx", "androidx-appcompat", "androidx-biometrics", "androidx-compose-ui-tooling", "androidx-compose-ui-tooling-preview", "androidx-compose-runtime-livedata", "androidx-core-splashscreen", "androidx-hilt-lifecycle-viewmodel", "dagger-hilt-android", "androidx-hilt-work", "androidx-lifecycle-process", "androidx-navigation-compose", "androidx-paging-compose", "androidx-paging-runtime", "androidx-profileinstaller", "androidx-work-runtimeKtx", "android-material", "androidx-compose-material3", "android-material-icons-core", "arrow-core", "coil-compose", "timber", "kotlinx-immutableCollections", "okhttp", "plumber", "sentry", "sentry-compose", "proton-core-proguardRules", "proton-rust-core" ] compose = [ "androidx-activity-compose", "androidx-compose-foundation", "androidx-compose-foundation-layout", "androidx-compose-material", "androidx-compose-material3", "android-material-icons-core", "androidx-compose-runtime", "androidx-compose-runtime-livedata", "androidx-compose-ui", "androidx-compose-ui-tooling-preview", "androidx-constraintlayout-compose" ] compose-debug = [ "androidx-compose-ui-test-manifest", "androidx-compose-ui-tooling", "androidx-customview", "androidx-customview-poolingcontainer" ] module-presentation = [ "androidx-annotation", "androidx-compose-material3", "androidx-hilt-lifecycle-viewmodel", "android-material-icons-core", "androidx-compose-ui-tooling", "androidx-compose-ui-tooling-preview", "arrow-core", "dagger-hilt-android", "javax-inject", "kotlinx-immutableCollections", "proton-core-domain", "proton-core-presentation", "proton-core-presentationCompose", "timber" ] module-data = [ "androidx-datastore-preferences", "androidx-work-runtimeKtx", "arrow-core", "dagger-hilt-android", "timber", "javax-inject", "kotlin-serialization-json", "okhttp", ] module-domain = [ "arrow-core", "dagger-hilt-android", "timber", "javax-inject", "kotlin-coroutines-core" ] app-annotationProcessors = [ "androidx-room-compiler", "androidx-hilt-compiler", "dagger-hilt-compiler" ] app-debug = [ "leakcanary-android" ] test = [ "androidx-lifecycle-runtime-testing", "cash-turbine", "guava", "junit", "kotlin-test", "kotlin-test-junit", "kotlin-coroutines-test", "mockk", "proton-core-testAndroid", "proton-core-testKotlin" ] test-androidTest = [ "androidx-compose-ui-test", "androidx-compose-ui-test-junit4", "androidx-datastore-preferences", "androidx-test-core", "androidx-test-core-ktx", "androidx-test-espresso-core", "androidx-test-espresso-web", "androidx-test-espresso-intents", "androidx-test-monitor", "androidx-test-rules", "androidx-test-runner", "androidx-test-uiautomator", "cash-turbine", "dagger-hilt-android-testing", "kotlin-test", "kotlin-test-junit", "mockk-android", ] module-legacyCore = [ "proton-core-auth-domain", "proton-core-eventManager-domain", "proton-core-featureFlag-domain", "proton-core-mailSettings-domain", "proton-core-presentation", "proton-core-user-domain", "proton-core-utilAndroidDagger", "proton-core-utilAndroidStrictMode", ]