// IMPORTANT: After changing a dependency, please run: // ./gradlew --write-verification-metadata sha256 qa --rerun-tasks dependencyResolutionManagement { versionCatalogs { create("libs") { version("androidx-appcompat", "1.6.1") version("androidx-activity", "1.8.2") version("androidx-camera", "1.3.1") version("androidx-fragment", "1.6.2") version("androidx-lifecycle", "2.7.0") version("androidx-media3", "1.2.1") version("androidx-navigation", "2.7.6") version("androidx-window", "1.2.0") version("exoplayer", "2.19.0") version("glide", "4.15.1") version("kotlin", "1.8.10") version("libsignal-client", "0.39.2") version("mp4parser", "1.9.39") version("android-gradle-plugin", "8.0.2") version("accompanist", "0.28.0") version("nanohttpd", "2.3.1") // Android Plugins library("android-library", "com.android.library", "com.android.library.gradle.plugin").versionRef("android-gradle-plugin") library("android-application", "com.android.application", "com.android.application.gradle.plugin").versionRef("android-gradle-plugin") // Compose library("androidx-compose-bom", "androidx.compose:compose-bom:2023.09.01") library("androidx-compose-material3", "androidx.compose.material3", "material3").withoutVersion() library("androidx-compose-ui-tooling-preview", "androidx.compose.ui", "ui-tooling-preview").withoutVersion() library("androidx-compose-ui-tooling-core", "androidx.compose.ui", "ui-tooling").withoutVersion() library("androidx-compose-ui-test-manifest", "androidx.compose.ui", "ui-test-manifest").withoutVersion() library("androidx-compose-runtime-livedata", "androidx.compose.runtime", "runtime-livedata").withoutVersion() library("androidx-compose-rxjava3", "androidx.compose.runtime:runtime-rxjava3:1.4.2") library("ktlint-twitter-compose", "com.twitter.compose.rules:ktlint:0.0.26") // Accompanist library("accompanist-permissions", "com.google.accompanist", "accompanist-permissions").versionRef("accompanist") // Desugaring library("android-tools-desugar", "com.android.tools:desugar_jdk_libs:1.1.5") // Kotlin library("kotlin-stdlib-jdk8", "org.jetbrains.kotlin", "kotlin-stdlib-jdk8").versionRef("kotlin") library("kotlin-reflect", "org.jetbrains.kotlin", "kotlin-reflect").versionRef("kotlin") library("kotlin-gradle-plugin", "org.jetbrains.kotlin", "kotlin-gradle-plugin").versionRef("kotlin") library("ktlint", "org.jlleitschuh.gradle:ktlint-gradle:11.4.2") // Android X library("androidx-activity-ktx", "androidx.activity", "activity-ktx").versionRef("androidx-activity") library("androidx-activity-compose", "androidx.activity", "activity-compose").versionRef("androidx-activity") library("androidx-appcompat", "androidx.appcompat", "appcompat").versionRef("androidx-appcompat") library("androidx-core-ktx", "androidx.core:core-ktx:1.12.0") library("androidx-fragment-ktx", "androidx.fragment", "fragment-ktx").versionRef("androidx-fragment") library("androidx-fragment-testing", "androidx.fragment", "fragment-testing").versionRef("androidx-fragment") library("androidx-annotation", "androidx.annotation:annotation:1.4.0") library("androidx-constraintlayout", "androidx.constraintlayout:constraintlayout:2.1.4") library("androidx-window-window", "androidx.window", "window").versionRef("androidx-window") library("androidx-window-java", "androidx.window", "window-java").versionRef("androidx-window") library("androidx-recyclerview", "androidx.recyclerview:recyclerview:1.3.1") library("androidx-legacy-support", "androidx.legacy:legacy-support-v13:1.0.0") library("androidx-legacy-preference", "androidx.legacy:legacy-preference-v14:1.0.0") library("androidx-preference", "androidx.preference:preference:1.0.0") library("androidx-gridlayout", "androidx.gridlayout:gridlayout:1.0.0") library("androidx-exifinterface", "androidx.exifinterface:exifinterface:1.3.3") library("androidx-media3-exoplayer", "androidx.media3", "media3-exoplayer").versionRef("androidx-media3") library("androidx-media3-session", "androidx.media3", "media3-session").versionRef("androidx-media3") library("androidx-media3-ui", "androidx.media3", "media3-ui").versionRef("androidx-media3") library("androidx-media3-decoder", "androidx.media3", "media3-decoder").versionRef("androidx-media3") library("androidx-media3-common", "androidx.media3", "media3-common").versionRef("androidx-media3") library("androidx-multidex", "androidx.multidex:multidex:2.0.1") library("androidx-navigation-fragment-ktx", "androidx.navigation", "navigation-fragment-ktx").versionRef("androidx-navigation") library("androidx-navigation-ui-ktx", "androidx.navigation", "navigation-ui-ktx").versionRef("androidx-navigation") library("androidx-navigation-compose", "androidx.navigation", "navigation-compose").versionRef("androidx-navigation") library("androidx-lifecycle-viewmodel-ktx", "androidx.lifecycle", "lifecycle-viewmodel-ktx").versionRef("androidx-lifecycle") library("androidx-lifecycle-livedata-core", "androidx.lifecycle", "lifecycle-livedata").versionRef("androidx-lifecycle") library("androidx-lifecycle-livedata-ktx", "androidx.lifecycle", "lifecycle-livedata-ktx").versionRef("androidx-lifecycle") library("androidx-lifecycle-process", "androidx.lifecycle", "lifecycle-process").versionRef("androidx-lifecycle") library("androidx-lifecycle-viewmodel-savedstate", "androidx.lifecycle", "lifecycle-viewmodel-savedstate").versionRef("androidx-lifecycle") library("androidx-lifecycle-common-java8", "androidx.lifecycle", "lifecycle-common-java8").versionRef("androidx-lifecycle") library("androidx-lifecycle-reactivestreams-ktx", "androidx.lifecycle", "lifecycle-reactivestreams-ktx").versionRef("androidx-lifecycle") library("androidx-camera-core", "androidx.camera", "camera-core").versionRef("androidx-camera") library("androidx-camera-camera2", "androidx.camera", "camera-camera2").versionRef("androidx-camera") library("androidx-camera-lifecycle", "androidx.camera", "camera-lifecycle").versionRef("androidx-camera") library("androidx-camera-view", "androidx.camera", "camera-view").versionRef("androidx-camera") library("androidx-concurrent-futures", "androidx.concurrent:concurrent-futures:1.0.0") library("androidx-autofill", "androidx.autofill:autofill:1.0.0") library("androidx-biometric", "androidx.biometric:biometric:1.1.0") library("androidx-sharetarget", "androidx.sharetarget:sharetarget:1.2.0-rc02") library("androidx-sqlite", "androidx.sqlite:sqlite:2.1.0") library("androidx-core-role", "androidx.core:core-role:1.0.0") library("androidx-profileinstaller", "androidx.profileinstaller:profileinstaller:1.2.2") library("androidx-asynclayoutinflater", "androidx.asynclayoutinflater:asynclayoutinflater:1.1.0-alpha01") library("androidx-asynclayoutinflater-appcompat", "androidx.asynclayoutinflater:asynclayoutinflater-appcompat:1.1.0-alpha01") // Material library("material-material", "com.google.android.material:material:1.8.0") // Google library("google-protobuf-javalite", "com.google.protobuf:protobuf-javalite:3.11.4") library("google-libphonenumber", "com.googlecode.libphonenumber:libphonenumber:8.13.23") library("google-play-services-maps", "com.google.android.gms:play-services-maps:18.1.0") library("google-play-services-auth", "com.google.android.gms:play-services-auth:20.3.0") library("google-play-services-wallet", "com.google.android.gms:play-services-wallet:19.1.0") library("google-zxing-android-integration", "com.google.zxing:android-integration:3.3.0") library("google-zxing-core", "com.google.zxing:core:3.4.1") library("google-ez-vcard", "com.googlecode.ez-vcard:ez-vcard:0.9.11") library("google-jsr305", "com.google.code.findbugs:jsr305:3.0.2") library("google-guava-android", "com.google.guava:guava:30.0-android") library("google-flexbox", "com.google.android.flexbox:flexbox:3.0.0") bundle("media3", listOf("androidx-media3-exoplayer", "androidx-media3-session", "androidx-media3-ui")) // Firebase library("firebase-messaging", "com.google.firebase:firebase-messaging:23.1.2") // 1st Party library("libsignal-client", "org.signal", "libsignal-client").versionRef("libsignal-client") library("libsignal-android", "org.signal", "libsignal-android").versionRef("libsignal-client") library("signal-aesgcmprovider", "org.signal:aesgcmprovider:0.0.3") library("signal-ringrtc", "org.signal:ringrtc-android:2.37.1") library("signal-android-database-sqlcipher", "org.signal:sqlcipher-android:4.5.4-S2") // Third Party library("greenrobot-eventbus", "org.greenrobot:eventbus:3.0.0") library("jackson-core", "com.fasterxml.jackson.core:jackson-databind:2.9.9.2") library("jackson-module-kotlin", "com.fasterxml.jackson.module:jackson-module-kotlin:2.12.0") library("square-okhttp3", "com.squareup.okhttp3:okhttp:3.12.13") library("square-okio", "com.squareup.okio:okio:3.0.0") library("square-leakcanary", "com.squareup.leakcanary:leakcanary-android:2.7") library("rxjava3-rxjava", "io.reactivex.rxjava3:rxjava:3.0.13") library("rxjava3-rxandroid", "io.reactivex.rxjava3:rxandroid:3.0.0") library("rxjava3-rxkotlin", "io.reactivex.rxjava3:rxkotlin:3.0.1") library("rxdogtag", "com.uber.rxdogtag2:rxdogtag:2.0.1") library("conscrypt-android", "org.conscrypt:conscrypt-android:2.5.2") library("mobilecoin", "com.mobilecoin:android-sdk:6.0.1") library("leolin-shortcutbadger", "me.leolin:ShortcutBadger:1.1.22") library("emilsjolander-stickylistheaders", "se.emilsjolander:stickylistheaders:2.7.0") library("apache-httpclient-android", "org.apache.httpcomponents:httpclient-android:4.3.5") library("glide-glide", "com.github.bumptech.glide", "glide").versionRef("glide") library("glide-ksp", "com.github.bumptech.glide", "ksp").versionRef("glide") library("roundedimageview", "com.makeramen:roundedimageview:2.1.0") library("materialish-progress", "com.pnikosis:materialish-progress:1.7") library("subsampling-scale-image-view", "com.davemorrissey.labs:subsampling-scale-image-view-androidx:3.10.0") library("android-tooltips", "com.tomergoldst.android:tooltips:1.0.6") library("android-smsmms", "com.klinkerapps:android-smsmms:4.0.1") library("stream", "com.annimon:stream:1.1.8") library("lottie", "com.airbnb.android:lottie:5.2.0") library("dnsjava", "dnsjava:dnsjava:2.1.9") library("nanohttpd-webserver", "org.nanohttpd", "nanohttpd-webserver").versionRef("nanohttpd") library("nanohttpd-websocket", "org.nanohttpd", "nanohttpd-websocket").versionRef("nanohttpd") library("kotlinx-collections-immutable", "org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.5") // Can"t use the newest version because it hits some weird NoClassDefFoundException library("jknack-handlebars", "com.github.jknack:handlebars:4.0.7") // Mp4Parser library("mp4parser-isoparser", "org.mp4parser", "isoparser").versionRef("mp4parser") library("mp4parser-streaming", "org.mp4parser", "streaming").versionRef("mp4parser") library("mp4parser-muxer", "org.mp4parser", "muxer").versionRef("mp4parser") bundle("mp4parser", listOf("mp4parser-isoparser", "mp4parser-streaming", "mp4parser-muxer")) } create("benchmarkLibs") { version("androidx-test-ext-junit", "1.1.3") // Macrobench/Baseline profiles library("androidx-test-ext-junit", "androidx.test.ext", "junit").versionRef("androidx-test-ext-junit") library("espresso-core", "androidx.test.espresso:espresso-core:3.4.0") library("uiautomator", "androidx.test.uiautomator:uiautomator:2.2.0") library("androidx-benchmark-macro", "androidx.benchmark:benchmark-macro-junit4:1.1.1") library("androidx-benchmark-micro", "androidx.benchmark:benchmark-junit4:1.1.0-beta04") } create("testLibs") { version("androidx-test", "1.5.0") version("androidx-test-ext-junit", "1.1.5") version("robolectric", "4.10.3") library("junit-junit", "junit:junit:4.13.2") library("androidx-test-core", "androidx.test", "core").versionRef("androidx-test") library("androidx-test-core-ktx", "androidx.test", "core-ktx").versionRef("androidx-test") library("androidx-test-ext-junit", "androidx.test.ext", "junit").versionRef("androidx-test-ext-junit") library("androidx-test-ext-junit-ktx", "androidx.test.ext", "junit-ktx").versionRef("androidx-test-ext-junit") library("androidx-test-monitor", "androidx.test:monitor:1.6.1") library("androidx-test-orchestrator", "androidx.test:orchestrator:1.4.1") library("androidx-test-runner", "androidx.test", "runner").versionRef("androidx-test") library("espresso-core", "androidx.test.espresso:espresso-core:3.4.0") library("mockito-core", "org.mockito:mockito-inline:4.6.1") library("mockito-kotlin", "org.mockito.kotlin:mockito-kotlin:4.0.0") library("mockito-android", "org.mockito:mockito-android:4.6.1") library("robolectric-robolectric", "org.robolectric", "robolectric").versionRef("robolectric") library("robolectric-shadows-multidex", "org.robolectric", "shadows-multidex").versionRef("robolectric") library("bouncycastle-bcprov-jdk15on", "org.bouncycastle:bcprov-jdk15on:1.70") library("bouncycastle-bcpkix-jdk15on", "org.bouncycastle:bcpkix-jdk15on:1.70") library("hamcrest-hamcrest", "org.hamcrest:hamcrest:2.2") library("assertj-core", "org.assertj:assertj-core:3.11.1") library("square-okhttp-mockserver", "com.squareup.okhttp3:mockwebserver:3.12.13") library("mockk", "io.mockk:mockk:1.13.2") library("mockk-android", "io.mockk:mockk-android:1.13.2") library("conscrypt-openjdk-uber", "org.conscrypt:conscrypt-openjdk-uber:2.5.2") } create("lintLibs") { version("lint", "30.2.2") library("lint-api", "com.android.tools.lint", "lint-api").versionRef("lint") library("lint-checks", "com.android.tools.lint", "lint-checks").versionRef("lint") library("lint-tests", "com.android.tools.lint", "lint-tests").versionRef("lint") } } }