From f5db6b6c91a65bd9139cb360b3ce57d74a09130e Mon Sep 17 00:00:00 2001 From: Jameson Williams Date: Fri, 15 Nov 2024 19:19:22 -0600 Subject: [PATCH] Switch to using toml version catalogs. Resolves #13792 --- build-logic/settings.gradle.kts | 10 +- dependencies.gradle.kts | 224 ---------------------------- gradle/benchmark-libs.versions.toml | 13 ++ gradle/libs.versions.toml | 164 ++++++++++++++++++++ gradle/lint-libs.versions.toml | 10 ++ gradle/test-libs.versions.toml | 33 ++++ settings.gradle.kts | 14 +- 7 files changed, 240 insertions(+), 228 deletions(-) delete mode 100644 dependencies.gradle.kts create mode 100644 gradle/benchmark-libs.versions.toml create mode 100644 gradle/libs.versions.toml create mode 100644 gradle/lint-libs.versions.toml create mode 100644 gradle/test-libs.versions.toml diff --git a/build-logic/settings.gradle.kts b/build-logic/settings.gradle.kts index 08b8672147..32b89df3f5 100644 --- a/build-logic/settings.gradle.kts +++ b/build-logic/settings.gradle.kts @@ -13,11 +13,17 @@ dependencyResolutionManagement { mavenCentral() gradlePluginPortal() } + versionCatalogs { + create("libs") { + from(files("../gradle/libs.versions.toml")) + } + create("testLibs") { + from(files("../gradle/test-libs.versions.toml")) + } + } } rootProject.name = "build-logic" include(":plugins") include(":tools") - -apply(from = "../dependencies.gradle.kts") diff --git a/dependencies.gradle.kts b/dependencies.gradle.kts deleted file mode 100644 index 45c0a8f1a2..0000000000 --- a/dependencies.gradle.kts +++ /dev/null @@ -1,224 +0,0 @@ -// 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.9.2") - version("androidx-camera", "1.3.4") - version("androidx-fragment", "1.8.3") - version("androidx-lifecycle", "2.8.5") - version("androidx-media3", "1.3.1") - version("androidx-navigation", "2.8.0") - version("androidx-window", "1.3.0") - version("exoplayer", "2.19.0") - version("glide", "4.15.1") - version("kotlin", "1.9.20") - version("libsignal-client", "0.62.0") - version("mp4parser", "1.9.39") - version("android-gradle-plugin", "8.4.0") - 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:2024.09.00") - 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") - library("accompanist-drawablepainter", "com.google.accompanist:accompanist-drawablepainter:0.36.0") - - // Desugaring - library("android-tools-desugar", "com.android.tools:desugar_jdk_libs:1.1.6") - - // 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:12.1.1") - library("kotlinx-coroutines-core", "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0") - library("kotlinx-coroutines-core-jvm", "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.9.0") - library("kotlinx-coroutines-play-services", "org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.8.1") - library("kotlinx-coroutines-rx3", "org.jetbrains.kotlinx:kotlinx-coroutines-rx3:1.3.9") - - // 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-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-lifecycle-runtime-compose", "androidx.lifecycle", "lifecycle-runtime-compose").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-extensions", "androidx.camera", "camera-extensions").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") - library("androidx-emoji2", "androidx.emoji2:emoji2:1.4.0") - library("androidx-documentfile", "androidx.documentfile:documentfile:1.0.0") - library("android-billing", "com.android.billingclient:billing-ktx:7.0.0") - - // 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.40") - library("google-play-services-maps", "com.google.android.gms:play-services-maps:18.2.0") - library("google-play-services-auth", "com.google.android.gms:play-services-auth:21.0.0") - library("google-play-services-wallet", "com.google.android.gms:play-services-wallet:19.2.1") - 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.48.4") - library("signal-android-database-sqlcipher", "org.signal:sqlcipher-android:4.6.0-S1") - - // 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:4.12.0") - library("square-okio", "com.squareup.okio:okio:3.6.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("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("stream", "com.annimon:stream:1.1.8") - library("lottie", "com.airbnb.android:lottie:5.2.0") - library("lottie-compose", "com.airbnb.android:lottie-compose:6.4.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") - version("espresso", "3.4.0") - - 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").versionRef("espresso") - library("kotlinx-coroutines-test", "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.9.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("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:4.12.0") - 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") - library("diff-utils", "io.github.java-diff-utils:java-diff-utils:4.12") - } - - create("lintLibs") { - version("lint", "31.4.0") // Lint version is AGP version + 23.0.0 - - 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") - } - } -} diff --git a/gradle/benchmark-libs.versions.toml b/gradle/benchmark-libs.versions.toml new file mode 100644 index 0000000000..f37038b51a --- /dev/null +++ b/gradle/benchmark-libs.versions.toml @@ -0,0 +1,13 @@ +# IMPORTANT: After changing a dependency, please run: +# ./gradlew --write-verification-metadata sha256 qa --rerun-tasks + +[versions] +androidx-test-ext-junit = "1.1.3" + +[libraries] +# Macrobench/Baseline profiles +androidx-test-ext-junit = { module = "androidx.test.ext:junit", version.ref = "androidx-test-ext-junit" } +espresso-core = "androidx.test.espresso:espresso-core:3.4.0" +uiautomator = "androidx.test.uiautomator:uiautomator:2.2.0" +androidx-benchmark-macro = "androidx.benchmark:benchmark-macro-junit4:1.1.1" +androidx-benchmark-micro = "androidx.benchmark:benchmark-junit4:1.1.0-beta04" diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 0000000000..6a7c4fa84a --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,164 @@ +# IMPORTANT: After changing a dependency, please run: +# ./gradlew --write-verification-metadata sha256 qa --rerun-tasks + +[versions] +androidx-appcompat = "1.6.1" +androidx-activity = "1.9.2" +androidx-camera = "1.3.4" +androidx-fragment = "1.8.3" +androidx-lifecycle = "2.8.5" +androidx-media3 = "1.3.1" +androidx-navigation = "2.8.0" +androidx-window = "1.3.0" +glide = "4.15.1" +kotlin = "1.9.20" +libsignal-client = "0.62.0" +mp4parser = "1.9.39" +android-gradle-plugin = "8.4.0" +accompanist = "0.28.0" +nanohttpd = "2.3.1" + +[libraries] +# Android Plugins +android-library = { module = "com.android.library:com.android.library.gradle.plugin", version.ref = "android-gradle-plugin" } +android-application = { module = "com.android.application:com.android.application.gradle.plugin", version.ref = "android-gradle-plugin" } + +# Compose +androidx-compose-bom = "androidx.compose:compose-bom:2024.09.00" +androidx-compose-material3 = { module = "androidx.compose.material3:material3" } +androidx-compose-ui-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview" } +androidx-compose-ui-tooling-core = { module = "androidx.compose.ui:ui-tooling" } +androidx-compose-ui-test-manifest = { module = "androidx.compose.ui:ui-test-manifest" } +androidx-compose-runtime-livedata = { module = "androidx.compose.runtime:runtime-livedata" } +androidx-compose-rxjava3 = "androidx.compose.runtime:runtime-rxjava3:1.4.2" +ktlint-twitter-compose = "com.twitter.compose.rules:ktlint:0.0.26" + +# Accompanist +accompanist-permissions = { module = "com.google.accompanist:accompanist-permissions", version.ref = "accompanist" } +accompanist-drawablepainter = "com.google.accompanist:accompanist-drawablepainter:0.36.0" + +# Desugaring +android-tools-desugar = "com.android.tools:desugar_jdk_libs:1.1.6" + +# Kotlin +kotlin-stdlib-jdk8 = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8", version.ref = "kotlin" } +kotlin-reflect = { module = "org.jetbrains.kotlin:kotlin-reflect", version.ref = "kotlin" } +kotlin-gradle-plugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" } +ktlint = "org.jlleitschuh.gradle:ktlint-gradle:12.1.1" +kotlinx-coroutines-core = "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0" +kotlinx-coroutines-core-jvm = "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.9.0" +kotlinx-coroutines-play-services = "org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.8.1" +kotlinx-coroutines-rx3 = "org.jetbrains.kotlinx:kotlinx-coroutines-rx3:1.3.9" + +# Android X +androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity" } +androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidx-appcompat" } +androidx-core-ktx = "androidx.core:core-ktx:1.12.0" +androidx-fragment-ktx = { module = "androidx.fragment:fragment-ktx", version.ref = "androidx-fragment" } +androidx-fragment-testing = { module = "androidx.fragment:fragment-testing", version.ref = "androidx-fragment" } +androidx-annotation = "androidx.annotation:annotation:1.4.0" +androidx-constraintlayout = "androidx.constraintlayout:constraintlayout:2.1.4" +androidx-window-window = { module = "androidx.window:window", version.ref = "androidx-window" } +androidx-window-java = { module = "androidx.window:window-java", version.ref = "androidx-window" } +androidx-recyclerview = "androidx.recyclerview:recyclerview:1.3.1" +androidx-legacy-support = "androidx.legacy:legacy-support-v13:1.0.0" +androidx-legacy-preference = "androidx.legacy:legacy-preference-v14:1.0.0" +androidx-preference = "androidx.preference:preference:1.0.0" +androidx-gridlayout = "androidx.gridlayout:gridlayout:1.0.0" +androidx-exifinterface = "androidx.exifinterface:exifinterface:1.3.3" +androidx-media3-exoplayer = { module = "androidx.media3:media3-exoplayer", version.ref = "androidx-media3" } +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-navigation-fragment-ktx = { module = "androidx.navigation:navigation-fragment-ktx", version.ref = "androidx-navigation" } +androidx-navigation-ui-ktx = { module = "androidx.navigation:navigation-ui-ktx", version.ref = "androidx-navigation" } +androidx-navigation-compose = { module = "androidx.navigation:navigation-compose", version.ref = "androidx-navigation" } +androidx-lifecycle-viewmodel-ktx = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "androidx-lifecycle" } +androidx-lifecycle-livedata-core = { module = "androidx.lifecycle:lifecycle-livedata", version.ref = "androidx-lifecycle" } +androidx-lifecycle-livedata-ktx = { module = "androidx.lifecycle:lifecycle-livedata-ktx", version.ref = "androidx-lifecycle" } +androidx-lifecycle-process = { module = "androidx.lifecycle:lifecycle-process", version.ref = "androidx-lifecycle" } +androidx-lifecycle-viewmodel-savedstate = { module = "androidx.lifecycle:lifecycle-viewmodel-savedstate", version.ref = "androidx-lifecycle" } +androidx-lifecycle-common-java8 = { module = "androidx.lifecycle:lifecycle-common-java8", version.ref = "androidx-lifecycle" } +androidx-lifecycle-reactivestreams-ktx = { module = "androidx.lifecycle:lifecycle-reactivestreams-ktx", version.ref = "androidx-lifecycle" } +androidx-lifecycle-runtime-compose = { module = "androidx.lifecycle:lifecycle-runtime-compose", version.ref = "androidx-lifecycle" } +androidx-camera-core = { module = "androidx.camera:camera-core", version.ref = "androidx-camera" } +androidx-camera-camera2 = { module = "androidx.camera:camera-camera2", version.ref = "androidx-camera" } +androidx-camera-extensions = { module = "androidx.camera:camera-extensions", version.ref = "androidx-camera" } +androidx-camera-lifecycle = { module = "androidx.camera:camera-lifecycle", version.ref = "androidx-camera" } +androidx-camera-view = { module = "androidx.camera:camera-view", version.ref = "androidx-camera" } +androidx-concurrent-futures = "androidx.concurrent:concurrent-futures:1.0.0" +androidx-autofill = "androidx.autofill:autofill:1.0.0" +androidx-biometric = "androidx.biometric:biometric:1.1.0" +androidx-sharetarget = "androidx.sharetarget:sharetarget:1.2.0-rc02" +androidx-sqlite = "androidx.sqlite:sqlite:2.1.0" +androidx-profileinstaller = "androidx.profileinstaller:profileinstaller:1.2.2" +androidx-asynclayoutinflater = "androidx.asynclayoutinflater:asynclayoutinflater:1.1.0-alpha01" +androidx-asynclayoutinflater-appcompat = "androidx.asynclayoutinflater:asynclayoutinflater-appcompat:1.1.0-alpha01" +androidx-emoji2 = "androidx.emoji2:emoji2:1.4.0" +androidx-documentfile = "androidx.documentfile:documentfile:1.0.0" +android-billing = "com.android.billingclient:billing-ktx:7.0.0" + +# Billing +material-material = "com.google.android.material:material:1.8.0" + +# Google +google-libphonenumber = "com.googlecode.libphonenumber:libphonenumber:8.13.40" +google-play-services-maps = "com.google.android.gms:play-services-maps:18.2.0" +google-play-services-auth = "com.google.android.gms:play-services-auth:21.0.0" +google-play-services-wallet = "com.google.android.gms:play-services-wallet:19.2.1" +google-zxing-android-integration = "com.google.zxing:android-integration:3.3.0" +google-zxing-core = "com.google.zxing:core:3.4.1" +google-ez-vcard = "com.googlecode.ez-vcard:ez-vcard:0.9.11" +google-jsr305 = "com.google.code.findbugs:jsr305:3.0.2" +google-guava-android = "com.google.guava:guava:30.0-android" +google-flexbox = "com.google.android.flexbox:flexbox:3.0.0" + +# Firebase +firebase-messaging = "com.google.firebase:firebase-messaging:23.1.2" + +# 1st Party +libsignal-client = { module = "org.signal:libsignal-client", version.ref = "libsignal-client" } +libsignal-android = { module = "org.signal:libsignal-android", version.ref = "libsignal-client" } +signal-aesgcmprovider = "org.signal:aesgcmprovider:0.0.3" +signal-ringrtc = "org.signal:ringrtc-android:2.48.4" +signal-android-database-sqlcipher = "org.signal:sqlcipher-android:4.6.0-S1" + +# Third Party +greenrobot-eventbus = "org.greenrobot:eventbus:3.0.0" +jackson-core = "com.fasterxml.jackson.core:jackson-databind:2.9.9.2" +jackson-module-kotlin = "com.fasterxml.jackson.module:jackson-module-kotlin:2.12.0" +square-okhttp3 = "com.squareup.okhttp3:okhttp:4.12.0" +square-okio = "com.squareup.okio:okio:3.6.0" +square-leakcanary = "com.squareup.leakcanary:leakcanary-android:2.7" +rxjava3-rxjava = "io.reactivex.rxjava3:rxjava:3.0.13" +rxjava3-rxandroid = "io.reactivex.rxjava3:rxandroid:3.0.0" +rxjava3-rxkotlin = "io.reactivex.rxjava3:rxkotlin:3.0.1" +rxdogtag = "com.uber.rxdogtag2:rxdogtag:2.0.1" +conscrypt-android = "org.conscrypt:conscrypt-android:2.5.2" +mobilecoin = "com.mobilecoin:android-sdk:6.0.1" +leolin-shortcutbadger = "me.leolin:ShortcutBadger:1.1.22" +emilsjolander-stickylistheaders = "se.emilsjolander:stickylistheaders:2.7.0" +glide-glide = { module = "com.github.bumptech.glide:glide", version.ref = "glide" } +glide-ksp = { module = "com.github.bumptech.glide:ksp", version.ref = "glide" } +roundedimageview = "com.makeramen:roundedimageview:2.1.0" +materialish-progress = "com.pnikosis:materialish-progress:1.7" +subsampling-scale-image-view = "com.davemorrissey.labs:subsampling-scale-image-view-androidx:3.10.0" +android-tooltips = "com.tomergoldst.android:tooltips:1.0.6" +stream = "com.annimon:stream:1.1.8" +lottie = "com.airbnb.android:lottie:5.2.0" +lottie-compose = "com.airbnb.android:lottie-compose:6.4.0" +dnsjava = "dnsjava:dnsjava:2.1.9" +nanohttpd-webserver = { module = "org.nanohttpd:nanohttpd-webserver", version.ref = "nanohttpd" } +nanohttpd-websocket = { module = "org.nanohttpd:nanohttpd-websocket", version.ref = "nanohttpd" } +kotlinx-collections-immutable = "org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.5" + +# Can't use the newest version because it hits some weird NoClassDefFoundException +jknack-handlebars = "com.github.jknack:handlebars:4.0.7" + +# Mp4Parser +mp4parser-isoparser = { module = "org.mp4parser:isoparser", version.ref = "mp4parser" } +mp4parser-streaming = { module = "org.mp4parser:streaming", version.ref = "mp4parser" } +mp4parser-muxer = { module = "org.mp4parser:muxer", version.ref = "mp4parser" } + +[bundles] +media3 = ["androidx-media3-exoplayer", "androidx-media3-session", "androidx-media3-ui"] +mp4parser = ["mp4parser-isoparser", "mp4parser-streaming", "mp4parser-muxer"] diff --git a/gradle/lint-libs.versions.toml b/gradle/lint-libs.versions.toml new file mode 100644 index 0000000000..77b39775f5 --- /dev/null +++ b/gradle/lint-libs.versions.toml @@ -0,0 +1,10 @@ +# IMPORTANT: After changing a dependency, please run: +# ./gradlew --write-verification-metadata sha256 qa --rerun-tasks + +[versions] +lint = "31.4.0" + +[libraries] +lint-api = { module = "com.android.tools.lint:lint-api", version.ref = "lint" } +lint-checks = { module = "com.android.tools.lint:lint-checks", version.ref = "lint" } +lint-tests = { module = "com.android.tools.lint:lint-tests", version.ref = "lint" } diff --git a/gradle/test-libs.versions.toml b/gradle/test-libs.versions.toml new file mode 100644 index 0000000000..72ed8d102b --- /dev/null +++ b/gradle/test-libs.versions.toml @@ -0,0 +1,33 @@ +# IMPORTANT: After changing a dependency, please run: +# ./gradlew --write-verification-metadata sha256 qa --rerun-tasks + +[versions] +androidx-test = "1.5.0" +androidx-test-ext-junit = "1.1.5" +robolectric = "4.10.3" +espresso = "3.4.0" + +[libraries] +junit-junit = "junit:junit:4.13.2" +androidx-test-core = { module = "androidx.test:core", version.ref = "androidx-test" } +androidx-test-core-ktx = { module = "androidx.test:core-ktx", version.ref = "androidx-test" } +androidx-test-ext-junit = { module = "androidx.test.ext:junit", version.ref = "androidx-test-ext-junit" } +androidx-test-ext-junit-ktx = { module = "androidx.test.ext:junit-ktx", version.ref = "androidx-test-ext-junit" } +androidx-test-orchestrator = "androidx.test:orchestrator:1.4.1" +androidx-test-runner = { module = "androidx.test:runner", version.ref = "androidx-test" } +espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "espresso" } +kotlinx-coroutines-test = "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.9.0" +mockito-core = "org.mockito:mockito-inline:4.6.1" +mockito-kotlin = "org.mockito.kotlin:mockito-kotlin:4.0.0" +mockito-android = "org.mockito:mockito-android:4.6.1" +robolectric-robolectric = { module = "org.robolectric:robolectric", version.ref = "robolectric" } +bouncycastle-bcprov-jdk15on = "org.bouncycastle:bcprov-jdk15on:1.70" +bouncycastle-bcpkix-jdk15on = "org.bouncycastle:bcpkix-jdk15on:1.70" +hamcrest-hamcrest = "org.hamcrest:hamcrest:2.2" +assertj-core = "org.assertj:assertj-core:3.11.1" +square-okhttp-mockserver = "com.squareup.okhttp3:mockwebserver:4.12.0" +mockk = "io.mockk:mockk:1.13.2" +mockk-android = "io.mockk:mockk-android:1.13.2" + +conscrypt-openjdk-uber = "org.conscrypt:conscrypt-openjdk-uber:2.5.2" +diff-utils = "io.github.java-diff-utils:java-diff-utils:4.12" diff --git a/settings.gradle.kts b/settings.gradle.kts index e0a9e0218b..0d8e10c06b 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -22,6 +22,18 @@ dependencyResolutionManagement { url = uri("https://dl.cloudsmith.io/qxAgwaeEE1vN8aLU/mobilecoin/mobilecoin/maven/") } } + versionCatalogs { + // libs.versions.toml is automatically registered. + create("benchmarkLibs") { + from(files("gradle/benchmark-libs.versions.toml")) + } + create("testLibs") { + from(files("gradle/test-libs.versions.toml")) + } + create("lintLibs") { + from(files("gradle/lint-libs.versions.toml")) + } + } } // To build libsignal from source, set the libsignalClientPath property in gradle.properties. @@ -91,5 +103,3 @@ project(":video").projectDir = file("video/lib") project(":video-app").projectDir = file("video/app") rootProject.name = "Signal" - -apply(from = "dependencies.gradle.kts")