refactor(build): Use version catalog for Compose Multiplatform (#4452)

This commit is contained in:
James Rich 2026-02-04 16:31:26 -06:00 committed by GitHub
parent 4643435f5f
commit 67120465da
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 31 additions and 42 deletions

View file

@ -187,7 +187,7 @@ androidComponents {
}
}
project.afterEvaluate { logger.lifecycle("Version code is set to: ${android.defaultConfig.versionCode}") }
project.afterEvaluate { logger.lifecycle("Version code is set to: ${extensions.getByType<ApplicationExtension>().defaultConfig.versionCode}") }
dependencies {
implementation(projects.core.analytics)

View file

@ -19,9 +19,9 @@ import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.apply
import org.gradle.kotlin.dsl.configure
import org.jetbrains.compose.ComposeExtension
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
import org.meshtastic.buildlogic.configureComposeCompiler
import org.meshtastic.buildlogic.library
import org.meshtastic.buildlogic.libs
import org.meshtastic.buildlogic.plugin
@ -31,12 +31,11 @@ class KmpLibraryComposeConventionPlugin : Plugin<Project> {
apply(plugin = libs.plugin("compose-compiler").get().pluginId)
apply(plugin = libs.plugin("compose-multiplatform").get().pluginId)
val compose = extensions.getByType(ComposeExtension::class.java)
extensions.configure<KotlinMultiplatformExtension> {
sourceSets.getByName("commonMain").dependencies {
implementation(compose.dependencies.runtime)
implementation(libs.library("compose-multiplatform-runtime"))
// API because consuming modules will usually need the resource types
api(compose.dependencies.components.resources)
api(libs.library("compose-multiplatform-resources"))
}
}
configureComposeCompiler()

View file

@ -17,9 +17,7 @@
package org.meshtastic.buildlogic
import com.android.build.api.dsl.ApplicationExtension
import com.android.build.api.dsl.CommonExtension
import com.android.build.api.dsl.LibraryExtension
import org.gradle.api.Project
import org.gradle.kotlin.dsl.dependencies
@ -29,8 +27,9 @@ import org.gradle.kotlin.dsl.dependencies
internal fun Project.configureAndroidCompose(
commonExtension: CommonExtension,
) {
(commonExtension as? ApplicationExtension)?.buildFeatures?.compose = true
(commonExtension as? LibraryExtension)?.buildFeatures?.compose = true
commonExtension.apply {
buildFeatures.compose = true
}
dependencies {
val bom = libs.library("androidx-compose-bom")

View file

@ -20,7 +20,6 @@ package org.meshtastic.buildlogic
import com.android.build.api.dsl.ApplicationExtension
import com.android.build.api.dsl.CommonExtension
import com.android.build.api.dsl.KotlinMultiplatformAndroidLibraryTarget
import com.android.build.api.dsl.LibraryExtension
import org.gradle.api.JavaVersion
import org.gradle.api.Project
import org.gradle.kotlin.dsl.configure
@ -44,17 +43,13 @@ internal fun Project.configureKotlinAndroid(
val targetSdkVersion = configProperties.getProperty("TARGET_SDK").toInt()
commonExtension.apply {
when (this) {
is ApplicationExtension -> {
compileSdk = compileSdkVersion
defaultConfig.targetSdk = targetSdkVersion
}
is LibraryExtension -> {
compileSdk = compileSdkVersion
}
}
compileSdk = compileSdkVersion
defaultConfig.minSdk = minSdkVersion
if (this is ApplicationExtension) {
defaultConfig.targetSdk = targetSdkVersion
}
compileOptions.sourceCompatibility = JavaVersion.VERSION_17
compileOptions.targetCompatibility = JavaVersion.VERSION_17

View file

@ -18,7 +18,6 @@
package org.meshtastic.buildlogic
import com.android.build.api.dsl.ApplicationExtension
import com.android.build.api.dsl.ApplicationProductFlavor
import com.android.build.api.dsl.CommonExtension
import com.android.build.api.dsl.LibraryExtension
import com.android.build.api.dsl.ProductFlavor
@ -38,34 +37,28 @@ fun configureFlavors(
commonExtension: CommonExtension,
flavorConfigurationBlock: ProductFlavor.(flavor: MeshtasticFlavor) -> Unit = {},
) {
(commonExtension as? ApplicationExtension)?.apply {
commonExtension.apply {
FlavorDimension.entries.forEach { flavorDimension ->
flavorDimensions += flavorDimension.name
}
productFlavors {
MeshtasticFlavor.entries.forEach { meshtasticFlavor ->
register(meshtasticFlavor.name) {
dimension = meshtasticFlavor.dimension.name
flavorConfigurationBlock(this, meshtasticFlavor)
if (meshtasticFlavor.default) {
isDefault = true
when (this) {
is ApplicationExtension -> productFlavors {
MeshtasticFlavor.entries.forEach { meshtasticFlavor ->
register(meshtasticFlavor.name) {
dimension = meshtasticFlavor.dimension.name
flavorConfigurationBlock(this, meshtasticFlavor)
if (meshtasticFlavor.default) {
isDefault = true
}
}
}
}
}
}
(commonExtension as? LibraryExtension)?.apply {
FlavorDimension.entries.forEach { flavorDimension ->
flavorDimensions += flavorDimension.name
}
productFlavors {
MeshtasticFlavor.entries.forEach { meshtasticFlavor ->
register(meshtasticFlavor.name) {
dimension = meshtasticFlavor.dimension.name
flavorConfigurationBlock(this, meshtasticFlavor)
if (this@apply is ApplicationExtension && this is ApplicationProductFlavor) {
is LibraryExtension -> productFlavors {
MeshtasticFlavor.entries.forEach { meshtasticFlavor ->
register(meshtasticFlavor.name) {
dimension = meshtasticFlavor.dimension.name
flavorConfigurationBlock(this, meshtasticFlavor)
if (meshtasticFlavor.default) {
isDefault = true
}
@ -75,4 +68,3 @@ fun configureFlavors(
}
}
}

View file

@ -101,6 +101,10 @@ androidx-compose-ui-text = { module = "androidx.compose.ui:ui-text" }
androidx-compose-ui-tooling = { module = "androidx.compose.ui:ui-tooling" }
androidx-compose-ui-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview" }
# Compose Multiplatform
compose-multiplatform-runtime = { module = "org.jetbrains.compose.runtime:runtime", version.ref = "compose-multiplatform" }
compose-multiplatform-resources = { module = "org.jetbrains.compose.components:components-resources", version.ref = "compose-multiplatform" }
# Google
firebase-analytics = { module = "com.google.firebase:firebase-analytics" }
firebase-bom = { module = "com.google.firebase:firebase-bom", version = "34.8.0" }