diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 976bacec..39fc7fef 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,4 +1,4 @@ -import com.android.build.gradle.internal.api.BaseVariantOutputImpl +import com.android.build.api.variant.impl.VariantOutputImpl plugins { alias(libs.plugins.logfox.android.application) @@ -25,12 +25,12 @@ android { buildFeatures { viewBinding = true } +} - applicationVariants.configureEach { - outputs.configureEach { - if (this is BaseVariantOutputImpl) { - outputFileName = "LogFox-${versionName}-${name}.apk" - } +androidComponents.onVariants { variant -> + variant.outputs.forEach { output -> + if (output is VariantOutputImpl) { + output.outputFileName.set("LogFox-${output.versionName.get()}-${variant.name}.apk") } } } diff --git a/build-logic/conventions/src/main/kotlin/com/f0x1d/logfox/buildlogic/additional/AndroidComposeConventionPlugin.kt b/build-logic/conventions/src/main/kotlin/com/f0x1d/logfox/buildlogic/additional/AndroidComposeConventionPlugin.kt index 7ed570a3..d6fd5a9b 100644 --- a/build-logic/conventions/src/main/kotlin/com/f0x1d/logfox/buildlogic/additional/AndroidComposeConventionPlugin.kt +++ b/build-logic/conventions/src/main/kotlin/com/f0x1d/logfox/buildlogic/additional/AndroidComposeConventionPlugin.kt @@ -6,6 +6,7 @@ import com.f0x1d.logfox.buildlogic.extensions.implementation import com.f0x1d.logfox.buildlogic.extensions.pluginId import org.gradle.api.Plugin import org.gradle.api.Project +import org.gradle.kotlin.dsl.configure import org.gradle.kotlin.dsl.dependencies class AndroidComposeConventionPlugin : Plugin { @@ -14,16 +15,12 @@ class AndroidComposeConventionPlugin : Plugin { apply(pluginId("compose-compiler")) } - extensions.configure(CommonExtension::class.java) { - enableCompose() + extensions.configure { + buildFeatures.compose = true } dependencies { implementation(bundle("androidx-compose")) } } - - private fun CommonExtension<*, *, *, *, *, *>.enableCompose() { - buildFeatures.compose = true - } } diff --git a/build-logic/conventions/src/main/kotlin/com/f0x1d/logfox/buildlogic/additional/tests/AndroidSnapshotTestsConventionPlugin.kt b/build-logic/conventions/src/main/kotlin/com/f0x1d/logfox/buildlogic/additional/tests/AndroidSnapshotTestsConventionPlugin.kt index 8fe5710c..91f7ebbb 100644 --- a/build-logic/conventions/src/main/kotlin/com/f0x1d/logfox/buildlogic/additional/tests/AndroidSnapshotTestsConventionPlugin.kt +++ b/build-logic/conventions/src/main/kotlin/com/f0x1d/logfox/buildlogic/additional/tests/AndroidSnapshotTestsConventionPlugin.kt @@ -1,11 +1,10 @@ package com.f0x1d.logfox.buildlogic.additional.tests -import com.android.build.api.dsl.ApplicationExtension import com.android.build.api.dsl.CommonExtension -import com.android.build.api.dsl.LibraryExtension import com.f0x1d.logfox.buildlogic.extensions.pluginId import org.gradle.api.Plugin import org.gradle.api.Project +import org.gradle.kotlin.dsl.configure class AndroidSnapshotTestsConventionPlugin : Plugin { override fun apply(target: Project) = with(target) { @@ -13,18 +12,11 @@ class AndroidSnapshotTestsConventionPlugin : Plugin { apply(pluginId("roborazzi")) } - listOf( - LibraryExtension::class.java, - ApplicationExtension::class.java, - ).forEach { extensionClass -> - extensions.findByType(extensionClass)?.configureRobolectric() - } - } - - private fun CommonExtension<*, *, *, *, *, *>.configureRobolectric() { - testOptions { - animationsDisabled = true - unitTests.isIncludeAndroidResources = true + extensions.configure { + with(testOptions) { + animationsDisabled = true + unitTests.isIncludeAndroidResources = true + } } } } diff --git a/build-logic/conventions/src/main/kotlin/com/f0x1d/logfox/buildlogic/extensions/KotlinAndroid.kt b/build-logic/conventions/src/main/kotlin/com/f0x1d/logfox/buildlogic/extensions/KotlinAndroid.kt index 28d6e1a7..85e4940b 100644 --- a/build-logic/conventions/src/main/kotlin/com/f0x1d/logfox/buildlogic/extensions/KotlinAndroid.kt +++ b/build-logic/conventions/src/main/kotlin/com/f0x1d/logfox/buildlogic/extensions/KotlinAndroid.kt @@ -2,17 +2,20 @@ package com.f0x1d.logfox.buildlogic.extensions import com.android.build.api.dsl.CommonExtension import org.gradle.api.Project -import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjectExtension +import org.gradle.internal.Actions.with +import org.gradle.kotlin.dsl.configure +import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidExtension -internal fun Project.configureKotlinAndroid(commonExtension: CommonExtension<*, *, *, *, *, *>) = with(commonExtension) { +internal fun Project.configureKotlinAndroid( + commonExtension: CommonExtension, +) = with(commonExtension) { compileSdk = version("compileSdk") - defaultConfig { + with(defaultConfig) { minSdk = version("minSdk") - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } - extensions.configure("kotlin") { + this@configureKotlinAndroid.extensions.configure { jvmToolchain(JVM_VERSION) compilerOptions { diff --git a/build-logic/conventions/src/main/kotlin/com/f0x1d/logfox/buildlogic/main/AndroidApplicationConventionPlugin.kt b/build-logic/conventions/src/main/kotlin/com/f0x1d/logfox/buildlogic/main/AndroidApplicationConventionPlugin.kt index e294a726..77576928 100644 --- a/build-logic/conventions/src/main/kotlin/com/f0x1d/logfox/buildlogic/main/AndroidApplicationConventionPlugin.kt +++ b/build-logic/conventions/src/main/kotlin/com/f0x1d/logfox/buildlogic/main/AndroidApplicationConventionPlugin.kt @@ -12,7 +12,6 @@ class AndroidApplicationConventionPlugin : Plugin { override fun apply(target: Project) = with(target) { with(pluginManager) { apply(pluginId("android-application")) - apply(pluginId("kotlin-android")) } extensions.configure { diff --git a/build-logic/conventions/src/main/kotlin/com/f0x1d/logfox/buildlogic/main/AndroidLibraryConventionPlugin.kt b/build-logic/conventions/src/main/kotlin/com/f0x1d/logfox/buildlogic/main/AndroidLibraryConventionPlugin.kt index 69fc9cc6..d446a154 100644 --- a/build-logic/conventions/src/main/kotlin/com/f0x1d/logfox/buildlogic/main/AndroidLibraryConventionPlugin.kt +++ b/build-logic/conventions/src/main/kotlin/com/f0x1d/logfox/buildlogic/main/AndroidLibraryConventionPlugin.kt @@ -1,6 +1,6 @@ package com.f0x1d.logfox.buildlogic.main -import com.android.build.gradle.LibraryExtension +import com.android.build.api.dsl.LibraryExtension import com.f0x1d.logfox.buildlogic.extensions.configureKotlinAndroid import com.f0x1d.logfox.buildlogic.extensions.pluginId import org.gradle.api.Plugin @@ -11,7 +11,6 @@ class AndroidLibraryConventionPlugin : Plugin { override fun apply(target: Project) = with(target) { with(pluginManager) { apply(pluginId("android-library")) - apply(pluginId("kotlin-android")) } extensions.configure { diff --git a/build-logic/conventions/src/main/kotlin/com/f0x1d/logfox/buildlogic/main/KotlinJvmConventionPlugin.kt b/build-logic/conventions/src/main/kotlin/com/f0x1d/logfox/buildlogic/main/KotlinJvmConventionPlugin.kt index 7816c2e6..e87512f7 100644 --- a/build-logic/conventions/src/main/kotlin/com/f0x1d/logfox/buildlogic/main/KotlinJvmConventionPlugin.kt +++ b/build-logic/conventions/src/main/kotlin/com/f0x1d/logfox/buildlogic/main/KotlinJvmConventionPlugin.kt @@ -4,6 +4,7 @@ import com.f0x1d.logfox.buildlogic.extensions.JVM_VERSION import com.f0x1d.logfox.buildlogic.extensions.pluginId import org.gradle.api.Plugin import org.gradle.api.Project +import org.gradle.kotlin.dsl.configure import org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension class KotlinJvmConventionPlugin : Plugin { @@ -12,7 +13,7 @@ class KotlinJvmConventionPlugin : Plugin { apply(pluginId("kotlin-jvm")) } - extensions.configure(KotlinJvmProjectExtension::class.java) { + extensions.configure { jvmToolchain(JVM_VERSION) compilerOptions { diff --git a/build-logic/conventions/src/main/kotlin/com/f0x1d/logfox/buildlogic/main/feature/AndroidFeatureConventionPlugin.kt b/build-logic/conventions/src/main/kotlin/com/f0x1d/logfox/buildlogic/main/feature/AndroidFeatureConventionPlugin.kt index 18f84482..ac502f24 100644 --- a/build-logic/conventions/src/main/kotlin/com/f0x1d/logfox/buildlogic/main/feature/AndroidFeatureConventionPlugin.kt +++ b/build-logic/conventions/src/main/kotlin/com/f0x1d/logfox/buildlogic/main/feature/AndroidFeatureConventionPlugin.kt @@ -1,13 +1,15 @@ package com.f0x1d.logfox.buildlogic.main.feature +import com.f0x1d.logfox.buildlogic.additional.AndroidHiltConventionPlugin +import com.f0x1d.logfox.buildlogic.main.AndroidLibraryConventionPlugin import org.gradle.api.Plugin import org.gradle.api.Project class AndroidFeatureConventionPlugin : Plugin { override fun apply(target: Project) = with(target) { with(pluginManager) { - apply("logfox.android.library") - apply("logfox.android.hilt") + apply(AndroidLibraryConventionPlugin::class.java) + apply(AndroidHiltConventionPlugin::class.java) } } } diff --git a/build.gradle.kts b/build.gradle.kts index 96a5cbab..a09db32e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,9 +1,10 @@ plugins { alias(libs.plugins.android.application) apply false alias(libs.plugins.android.library) apply false - alias(libs.plugins.kotlin.android) apply false alias(libs.plugins.compose.compiler) apply false + alias(libs.plugins.kotlin.jvm) apply false + alias(libs.plugins.ksp) apply false alias(libs.plugins.hilt.android) apply false diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index dbee52bb..fecfe088 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -4,25 +4,25 @@ compileSdk = "36" minSdk = "24" targetSdk = "36" -kotlin = "2.3.0" +kotlin = "2.3.10" kotlinx-coroutines = "1.10.2" -androidGradlePlugin = "8.13.2" +androidGradlePlugin = "9.0.0" ksp = "2.3.4" -hilt = "2.58" +hilt = "2.59.1" javax-inject = "1" androidx-appcompat = "1.7.1" androidx-constraintlayout = "2.2.1" androidx-core = "1.17.0" androidx-collection = "1.5.0" androidx-fragment = "1.8.9" -androidx-activity = "1.12.2" +androidx-activity = "1.12.3" androidx-hilt-navigation-fragment = "1.3.0" androidx-lifecycle = "2.10.0" -androidx-navigation = "2.9.6" +androidx-navigation = "2.9.7" androidx-preference = "1.2.1" androidx-recyclerview = "1.4.0" androidx-room = "2.8.4" -androidx-compose = "1.10.1" +androidx-compose = "1.10.2" androidx-compose-material3 = "1.4.0" androidx-documentfile = "1.1.0" insetter = "0.6.1" @@ -36,8 +36,8 @@ flow-preferences = "1.9.1" timber = "5.0.1" libsu = "6.0.0" junit = "4.13.2" -robolectric = "4.16" -roborazzi = "1.56.0" +robolectric = "4.16.1" +roborazzi = "1.58.0" androidx-test-core = "1.7.0" androidx-test-ext-junit = "1.3.0" androidx-test-espresso = "3.7.0" @@ -104,7 +104,6 @@ kotlin-gradle-plugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", v [plugins] -kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlin" } android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" }