From 59916a4cbee8155708fbba7604489f590139df04 Mon Sep 17 00:00:00 2001 From: Phil Oliver <3497406+poliver@users.noreply.github.com> Date: Tue, 7 Oct 2025 06:23:12 -0400 Subject: [PATCH] Remove version catalog bundles (#3370) --- .../kotlin/AndroidLibraryConventionPlugin.kt | 3 +- .../kotlin/AndroidRoomConventionPlugin.kt | 2 +- .../src/main/kotlin/HiltConventionPlugin.kt | 2 +- .../mesh/buildlogic/AndroidCompose.kt | 4 +- core/analytics/build.gradle.kts | 24 ++++++------ core/datastore/build.gradle.kts | 3 +- core/network/build.gradle.kts | 23 +++++++++-- core/prefs/build.gradle.kts | 2 +- core/ui/build.gradle.kts | 16 ++++++-- feature/intro/build.gradle.kts | 8 +++- feature/map/build.gradle.kts | 29 +++++++++++--- feature/node/build.gradle.kts | 8 +++- feature/settings/build.gradle.kts | 9 ++++- gradle/libs.versions.toml | 38 ------------------- mesh_service_example/build.gradle.kts | 4 +- 15 files changed, 99 insertions(+), 76 deletions(-) diff --git a/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt index cf3e0b57a..9e50e0d13 100644 --- a/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt @@ -50,7 +50,8 @@ class AndroidLibraryConventionPlugin : Plugin { } dependencies { "androidTestImplementation"(libs.findLibrary("kotlin.test").get()) - "androidTestImplementation"(libs.findBundle("testing.android").get()) + "androidTestImplementation"(libs.findLibrary("androidx-test-espresso-core").get()) + "androidTestImplementation"(libs.findLibrary("androidx-compose-ui-test-junit4").get()) "testImplementation"(libs.findLibrary("kotlin.test").get()) } diff --git a/build-logic/convention/src/main/kotlin/AndroidRoomConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidRoomConventionPlugin.kt index a816fbf8b..89433bf60 100644 --- a/build-logic/convention/src/main/kotlin/AndroidRoomConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidRoomConventionPlugin.kt @@ -46,7 +46,7 @@ class AndroidRoomConventionPlugin : Plugin { "implementation"(libs.findLibrary("androidx.room.runtime").get()) "implementation"(libs.findLibrary("androidx.room.ktx").get()) "ksp"(libs.findLibrary("androidx.room.compiler").get()) - "androidTestImplementation"(libs.findBundle("testing.room").get()) + "androidTestImplementation"(libs.findLibrary("androidx-room-testing").get()) } } } diff --git a/build-logic/convention/src/main/kotlin/HiltConventionPlugin.kt b/build-logic/convention/src/main/kotlin/HiltConventionPlugin.kt index ff0afd9a2..2b4df504e 100644 --- a/build-logic/convention/src/main/kotlin/HiltConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/HiltConventionPlugin.kt @@ -29,7 +29,7 @@ class HiltConventionPlugin : Plugin { dependencies { "ksp"(libs.findLibrary("hilt.compiler").get()) "implementation"(libs.findLibrary("hilt-android").get()) - "androidTestImplementation"(libs.findBundle("testing.hilt").get()) + "androidTestImplementation"(libs.findLibrary("hilt-android-testing").get()) } // Add support for Jvm Module, base on org.jetbrains.kotlin.jvm diff --git a/build-logic/convention/src/main/kotlin/com/geeksville/mesh/buildlogic/AndroidCompose.kt b/build-logic/convention/src/main/kotlin/com/geeksville/mesh/buildlogic/AndroidCompose.kt index 120e7b3e2..4011bbb51 100644 --- a/build-logic/convention/src/main/kotlin/com/geeksville/mesh/buildlogic/AndroidCompose.kt +++ b/build-logic/convention/src/main/kotlin/com/geeksville/mesh/buildlogic/AndroidCompose.kt @@ -39,8 +39,8 @@ internal fun Project.configureAndroidCompose( val bom = libs.findLibrary("androidx-compose-bom").get() "implementation"(platform(bom)) "androidTestImplementation"(platform(bom)) - "implementation"(libs.findBundle("navigation").get()) - "implementation"(libs.findBundle("ui-tooling").get()) + "implementation"(libs.findLibrary("androidx-navigation-compose").get()) + "implementation"(libs.findLibrary("androidx-compose-ui-tooling").get()) "implementation"(libs.findLibrary("androidx-compose-ui-tooling-preview").get()) "implementation"(libs.findLibrary("androidx-compose-runtime").get()) "implementation"(libs.findLibrary("androidx-compose-runtime-tracing").get()) diff --git a/core/analytics/build.gradle.kts b/core/analytics/build.gradle.kts index 0ab0d1c25..4a680f76e 100644 --- a/core/analytics/build.gradle.kts +++ b/core/analytics/build.gradle.kts @@ -31,20 +31,18 @@ dependencies { implementation(libs.androidx.lifecycle.process) implementation(libs.timber) + googleImplementation(libs.dd.sdk.android.compose) + googleImplementation(libs.dd.sdk.android.logs) + googleImplementation(libs.dd.sdk.android.okhttp) + googleImplementation(libs.dd.sdk.android.rum) + googleImplementation(libs.dd.sdk.android.session.replay) + googleImplementation(libs.dd.sdk.android.session.replay.compose) + googleImplementation(libs.dd.sdk.android.timber) + googleImplementation(libs.dd.sdk.android.trace) + googleImplementation(libs.dd.sdk.android.trace.otel) googleImplementation(platform(libs.firebase.bom)) - googleImplementation(libs.bundles.firebase) { - /* - Exclusion of protobuf / protolite dependencies is necessary as the - datastore-proto brings in protobuf dependencies. These are the source of truth - for Now in Android. - That's why the duplicate classes from below dependencies are excluded. - */ - exclude(group = "com.google.protobuf", module = "protobuf-java") - exclude(group = "com.google.protobuf", module = "protobuf-kotlin") - exclude(group = "com.google.protobuf", module = "protobuf-javalite") - exclude(group = "com.google.firebase", module = "protolite-well-known-types") - } - googleImplementation(libs.bundles.datadog) + googleImplementation(libs.firebase.analytics) + googleImplementation(libs.firebase.crashlytics) } val googleServiceKeywords = listOf("crashlytics", "google", "datadog") diff --git a/core/datastore/build.gradle.kts b/core/datastore/build.gradle.kts index edd017c00..f2b9d6459 100644 --- a/core/datastore/build.gradle.kts +++ b/core/datastore/build.gradle.kts @@ -27,7 +27,8 @@ android { namespace = "org.meshtastic.core.datastore" } dependencies { implementation(projects.core.proto) - implementation(libs.bundles.datastore) + implementation(libs.androidx.datastore) + implementation(libs.androidx.datastore.preferences) implementation(libs.kotlinx.serialization.json) implementation(libs.timber) } diff --git a/core/network/build.gradle.kts b/core/network/build.gradle.kts index 6973309f7..86dcaa587 100644 --- a/core/network/build.gradle.kts +++ b/core/network/build.gradle.kts @@ -32,8 +32,25 @@ android { dependencies { implementation(projects.core.model) - implementation(libs.bundles.ktor) - implementation(libs.bundles.coil) - "googleImplementation"(libs.bundles.datadog) + + implementation(libs.coil) + implementation(libs.coil.network.core) + implementation(libs.coil.network.okhttp) + implementation(libs.coil.svg) implementation(libs.kotlinx.serialization.json) + implementation(libs.ktor.client.content.negotiation) + implementation(libs.ktor.client.okhttp) + implementation(libs.ktor.serialization.kotlinx.json) + implementation(libs.ktorfit) + implementation(libs.okhttp3.logging.interceptor) + + googleImplementation(libs.dd.sdk.android.compose) + googleImplementation(libs.dd.sdk.android.logs) + googleImplementation(libs.dd.sdk.android.okhttp) + googleImplementation(libs.dd.sdk.android.rum) + googleImplementation(libs.dd.sdk.android.session.replay) + googleImplementation(libs.dd.sdk.android.session.replay.compose) + googleImplementation(libs.dd.sdk.android.timber) + googleImplementation(libs.dd.sdk.android.trace) + googleImplementation(libs.dd.sdk.android.trace.otel) } diff --git a/core/prefs/build.gradle.kts b/core/prefs/build.gradle.kts index 350ea45fd..75e31350c 100644 --- a/core/prefs/build.gradle.kts +++ b/core/prefs/build.gradle.kts @@ -24,7 +24,7 @@ plugins { android { namespace = "org.meshtastic.core.prefs" } dependencies { - implementation(libs.bundles.coroutines) implementation(libs.androidx.appcompat) + implementation(libs.kotlinx.coroutines.android) googleImplementation(libs.maps.compose) } diff --git a/core/ui/build.gradle.kts b/core/ui/build.gradle.kts index 6d0ad8885..c8b790ffe 100644 --- a/core/ui/build.gradle.kts +++ b/core/ui/build.gradle.kts @@ -31,10 +31,18 @@ dependencies { implementation(projects.core.proto) implementation(projects.core.strings) - implementation(libs.bundles.coroutines) - implementation(libs.bundles.markdown) - implementation(libs.bundles.ui) - + implementation(libs.androidx.compose.material.iconsExtended) + implementation(libs.androidx.compose.material3) + implementation(libs.androidx.compose.runtime.livedata) + implementation(libs.androidx.compose.ui.text) + implementation(libs.androidx.compose.ui.tooling.preview) + implementation(libs.androidx.constraintlayout) implementation(libs.androidx.emoji2.emojipicker) implementation(libs.androidx.hilt.lifecycle.viewmodel.compose) + implementation(libs.kotlinx.coroutines.android) + implementation(libs.kotlinx.coroutines.guava) + implementation(libs.markdown.renderer) + implementation(libs.markdown.renderer.m3) + implementation(libs.markdown.renderer.android) + implementation(libs.material) } diff --git a/feature/intro/build.gradle.kts b/feature/intro/build.gradle.kts index 67a7be709..ff1e8ad40 100644 --- a/feature/intro/build.gradle.kts +++ b/feature/intro/build.gradle.kts @@ -27,8 +27,14 @@ android { namespace = "org.meshtastic.feature.intro" } dependencies { implementation(projects.core.strings) - implementation(libs.bundles.ui) implementation(libs.accompanist.permissions) + implementation(libs.androidx.compose.material.iconsExtended) + implementation(libs.androidx.compose.material3) + implementation(libs.androidx.compose.runtime.livedata) + implementation(libs.androidx.compose.ui.text) + implementation(libs.androidx.compose.ui.tooling.preview) + implementation(libs.androidx.constraintlayout) implementation(libs.androidx.navigation3.runtime) implementation(libs.androidx.navigation3.ui) + implementation(libs.material) } diff --git a/feature/map/build.gradle.kts b/feature/map/build.gradle.kts index f0b56ccdc..35a683bd0 100644 --- a/feature/map/build.gradle.kts +++ b/feature/map/build.gradle.kts @@ -37,14 +37,31 @@ dependencies { implementation(projects.core.strings) implementation(projects.core.ui) - implementation(libs.bundles.coroutines) - implementation(libs.bundles.lifecycle) - implementation(libs.bundles.osm) - implementation(libs.bundles.ui) - googleImplementation(libs.bundles.maps.compose) - implementation(libs.accompanist.permissions) implementation(libs.androidx.annotation) + implementation(libs.androidx.compose.material.iconsExtended) + implementation(libs.androidx.compose.material3) + implementation(libs.androidx.compose.runtime.livedata) + implementation(libs.androidx.compose.ui.text) + implementation(libs.androidx.compose.ui.tooling.preview) + implementation(libs.androidx.constraintlayout) implementation(libs.androidx.hilt.lifecycle.viewmodel.compose) + implementation(libs.androidx.lifecycle.common.java8) + implementation(libs.androidx.lifecycle.livedata.ktx) + implementation(libs.androidx.lifecycle.process) + implementation(libs.androidx.lifecycle.runtime.compose) + implementation(libs.androidx.lifecycle.runtime.ktx) + implementation(libs.androidx.lifecycle.viewmodel.compose) + implementation(libs.androidx.lifecycle.viewmodel.ktx) + implementation(libs.kotlinx.coroutines.android) + implementation(libs.material) + implementation(libs.mgrs) + implementation(libs.osmbonuspack) + implementation(libs.osmdroid.android) implementation(libs.timber) + + googleImplementation(libs.location.services) + googleImplementation(libs.maps.compose) + googleImplementation(libs.maps.compose.utils) + googleImplementation(libs.maps.compose.widgets) } diff --git a/feature/node/build.gradle.kts b/feature/node/build.gradle.kts index 34ba6fd49..26290bda7 100644 --- a/feature/node/build.gradle.kts +++ b/feature/node/build.gradle.kts @@ -34,6 +34,12 @@ dependencies { implementation(projects.core.strings) implementation(projects.core.ui) - implementation(libs.bundles.ui) + implementation(libs.androidx.compose.material.iconsExtended) + implementation(libs.androidx.compose.material3) + implementation(libs.androidx.compose.runtime.livedata) + implementation(libs.androidx.compose.ui.text) + implementation(libs.androidx.compose.ui.tooling.preview) + implementation(libs.androidx.constraintlayout) + implementation(libs.material) implementation(libs.timber) } diff --git a/feature/settings/build.gradle.kts b/feature/settings/build.gradle.kts index 1a35c4582..cfca1d268 100644 --- a/feature/settings/build.gradle.kts +++ b/feature/settings/build.gradle.kts @@ -37,11 +37,16 @@ dependencies { implementation(projects.core.strings) implementation(projects.core.ui) - implementation(libs.bundles.ui) - implementation(libs.accompanist.permissions) + implementation(libs.androidx.compose.material.iconsExtended) + implementation(libs.androidx.compose.material3) + implementation(libs.androidx.compose.runtime.livedata) + implementation(libs.androidx.compose.ui.text) + implementation(libs.androidx.compose.ui.tooling.preview) + implementation(libs.androidx.constraintlayout) implementation(libs.androidx.hilt.lifecycle.viewmodel.compose) implementation(libs.kotlinx.collections.immutable) + implementation(libs.material) implementation(libs.timber) implementation(libs.zxing.android.embedded) } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 389da56d6..be312d71c 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -180,44 +180,6 @@ secrets-gradlePlugin = {module = "com.google.android.secrets-gradle-plugin:com.g serialization-gradlePlugin = { module = "org.jetbrains.kotlin.plugin.serialization:org.jetbrains.kotlin.plugin.serialization.gradle.plugin", version.ref = "kotlin" } spotless-gradlePlugin = { module = "com.diffplug.spotless:spotless-plugin-gradle", version = "8.0.0" } -[bundles] -# AndroidX -androidx = ["androidx-core-ktx", "androidx-appcompat", "androidx-appcompat-resources", "androidx-activity-ktx", "androidx-activity-compose"] -datastore = ["androidx-datastore", "androidx-datastore-preferences"] -lifecycle = ["androidx-lifecycle-runtime-ktx", "androidx-lifecycle-livedata-ktx", "androidx-lifecycle-viewmodel-ktx", "androidx-lifecycle-common-java8", "androidx-lifecycle-process", "androidx-lifecycle-viewmodel-compose", "androidx-lifecycle-runtime-compose"] -navigation = ["androidx-navigation-compose"] -navigation3 = ["androidx-navigation3-runtime", "androidx-navigation3-ui"] -room = ["androidx-room-runtime", "androidx-room-ktx"] - -# Coroutines -coroutines = ["kotlinx-coroutines-android", "kotlinx-coroutines-guava"] - -# Google -firebase = ["firebase-analytics", "firebase-crashlytics"] -maps-compose = ["location-services", "maps-compose", "maps-compose-utils", "maps-compose-widgets"] - -# Networking -ktor = ["ktor-client-content-negotiation", "ktor-client-okhttp", "ktor-serialization-kotlinx-json", "ktorfit", "okhttp3-logging-interceptor"] - -# Other -coil = ["coil", "coil-network-core", "coil-network-okhttp", "coil-svg"] -datadog = ["dd-sdk-android-compose", "dd-sdk-android-logs", "dd-sdk-android-okhttp", "dd-sdk-android-rum", "dd-sdk-android-session-replay", "dd-sdk-android-session-replay-compose", "dd-sdk-android-timber", "dd-sdk-android-trace", "dd-sdk-android-trace-otel"] -markdown = ["markdown-renderer", "markdown-renderer-m3", "markdown-renderer-android"] -osm = ["osmdroid-android", "osmbonuspack", "mgrs"] - -# Testing -testing = ["junit", "androidx-test-ext-junit"] -testing-android = ["androidx-test-espresso-core", "androidx-compose-ui-test-junit4"] -testing-android-manifest = ["androidx-compose-ui-test-manifest"] -testing-hilt = ["hilt-android-testing"] -testing-navigation = ["androidx-navigation-testing"] -testing-room = ["androidx-room-testing"] - -# UI -adaptive = ["androidx-compose-material3-adaptive", "androidx-compose-material3-adaptive-layout", "androidx-compose-material3-adaptive-navigation", "androidx-compose-material3-navigationSuite"] -ui = ["material", "androidx-constraintlayout", "androidx-compose-material3", "androidx-compose-material-iconsExtended", "androidx-compose-ui-tooling-preview", "androidx-compose-runtime-livedata", "androidx-compose-ui-text"] -ui-tooling = ["androidx-compose-ui-tooling"] #Separate for debugImplementation - [plugins] # Android android-application = { id = "com.android.application", version.ref = "agp" } diff --git a/mesh_service_example/build.gradle.kts b/mesh_service_example/build.gradle.kts index 31490f210..e44721c7a 100644 --- a/mesh_service_example/build.gradle.kts +++ b/mesh_service_example/build.gradle.kts @@ -62,6 +62,8 @@ dependencies { implementation(libs.material) // OSM - implementation(libs.bundles.osm) + implementation(libs.mgrs) + implementation(libs.osmbonuspack) + implementation(libs.osmdroid.android) implementation(libs.osmdroid.geopackage) { exclude(group = "com.j256.ormlite") } }