From ec64bea66b70c228f356a3a2de6bc7bec7489b8c Mon Sep 17 00:00:00 2001 From: skydoves Date: Wed, 16 Sep 2026 20:51:48 +0900 Subject: [PATCH 1/2] Update dependencies and compile SDK 36 Bumps Kotlin, Dokka, the publish plugin, Spotless, AppCompat, Material, Benchmark and UI Automator to the latest versions. Material 1.14.0 needs minSdk 23, so the demo app has its own minSdk while the library keeps 21. --- app/build.gradle.kts | 2 +- .../com/skydoves/colorpicker/Configuration.kt | 5 +++-- gradle/libs.versions.toml | 16 ++++++++-------- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index c6c393e..e8343a8 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -26,7 +26,7 @@ android { namespace = "com.skydoves.colorpickerviewdemo" defaultConfig { applicationId = "com.skydoves.colorpickerviewdemo" - minSdk = Configuration.minSdk + minSdk = Configuration.minSdkDemo targetSdk = Configuration.targetSdk versionCode = Configuration.versionCode versionName = Configuration.versionName diff --git a/buildSrc/src/main/kotlin/com/skydoves/colorpicker/Configuration.kt b/buildSrc/src/main/kotlin/com/skydoves/colorpicker/Configuration.kt index 9c77908..49fc43e 100644 --- a/buildSrc/src/main/kotlin/com/skydoves/colorpicker/Configuration.kt +++ b/buildSrc/src/main/kotlin/com/skydoves/colorpicker/Configuration.kt @@ -17,9 +17,10 @@ package com.skydoves.colorpicker object Configuration { - const val compileSdk = 35 - const val targetSdk = 35 + const val compileSdk = 36 + const val targetSdk = 36 const val minSdk = 21 + const val minSdkDemo = 23 const val minSdkBenchmark = 23 const val majorVersion = 2 const val minorVersion = 4 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 3d7191f..429003d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,17 +1,17 @@ [versions] agp = "8.13.2" -dokka = "2.1.0" -kotlin = "2.3.10" +dokka = "2.2.0" +kotlin = "2.4.20" kotlinBinaryCompatibility = "0.18.1" jvmTarget = "17" -nexusPlugin = "0.36.0" -androidxMaterial = "1.13.0" -androidxAppcompat = "1.7.1" -androidxMacroBenchmark = "1.4.1" +nexusPlugin = "0.37.0" +androidxMaterial = "1.14.0" +androidxAppcompat = "1.8.0" +androidxMacroBenchmark = "1.5.0" androidxTest = "1.7.0" baselineProfiles = "1.4.1" -uiAutomator = "2.3.0" -spotless = "8.2.1" +uiAutomator = "2.4.0" +spotless = "8.9.0" powerMenu = "2.2.4" timber = "5.0.1" junit = "1.3.0" From b22c800ecf0fd06b1bd6b6d027d233d277fb1dbe Mon Sep 17 00:00:00 2001 From: skydoves Date: Wed, 16 Sep 2026 20:51:48 +0900 Subject: [PATCH 2/2] Fix the build script deprecations of Kotlin 2.4 and Gradle 9 - abiValidation is enabled by calling the block and it needs an explicit reference dump directory since Kotlin 2.4. - managedDevices.devices and Project.buildDir are deprecated. - a DSL marker annotation has no effect on a top level function. --- benchmark/build.gradle.kts | 2 +- build.gradle.kts | 4 ++-- colorpickerview/build.gradle.kts | 3 ++- .../colorpickerview/kotlin/ColorPickerDialogExtension.kt | 4 ---- 4 files changed, 5 insertions(+), 8 deletions(-) diff --git a/benchmark/build.gradle.kts b/benchmark/build.gradle.kts index ce79cbd..0edd4f2 100644 --- a/benchmark/build.gradle.kts +++ b/benchmark/build.gradle.kts @@ -24,7 +24,7 @@ android { targetProjectPath = ":app" - testOptions.managedDevices.devices { + testOptions.managedDevices.allDevices { maybeCreate("pixel6api31").apply { device = "Pixel 6" apiLevel = 31 diff --git a/build.gradle.kts b/build.gradle.kts index e5d5e86..4e1720e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -29,14 +29,14 @@ subprojects { configure { java { target("**/*.java") - targetExclude("$buildDir/**/*.java") + targetExclude("${layout.buildDirectory.get().asFile.path}/**/*.java") licenseHeaderFile(rootProject.file("spotless/copyright.kt")) trimTrailingWhitespace() endWithNewline() } kotlin { target("**/*.kt") - targetExclude("$buildDir/**/*.kt") + targetExclude("${layout.buildDirectory.get().asFile.path}/**/*.kt") ktlint().editorConfigOverride( mapOf( "indent_size" to "2", diff --git a/colorpickerview/build.gradle.kts b/colorpickerview/build.gradle.kts index ae05d51..3318d5e 100644 --- a/colorpickerview/build.gradle.kts +++ b/colorpickerview/build.gradle.kts @@ -68,9 +68,10 @@ kotlin { jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17) } + // calling this block enables the ABI validation for the main variant. @OptIn(org.jetbrains.kotlin.gradle.dsl.abi.ExperimentalAbiValidation::class) abiValidation { - enabled.set(true) + referenceDumpDir.set(layout.projectDirectory.dir("api")) } } diff --git a/colorpickerview/src/main/java/com/skydoves/colorpickerview/kotlin/ColorPickerDialogExtension.kt b/colorpickerview/src/main/java/com/skydoves/colorpickerview/kotlin/ColorPickerDialogExtension.kt index 263c4e3..3017258 100644 --- a/colorpickerview/src/main/java/com/skydoves/colorpickerview/kotlin/ColorPickerDialogExtension.kt +++ b/colorpickerview/src/main/java/com/skydoves/colorpickerview/kotlin/ColorPickerDialogExtension.kt @@ -19,9 +19,6 @@ package com.skydoves.colorpickerview.kotlin import android.content.Context import com.skydoves.colorpickerview.ColorPickerDialog -@DslMarker -internal annotation class ColorPickerDsl - /** * Creates a lambda scope for implementing [ColorPickerDialog] using its [ColorPickerDialog.Builder]. * @@ -29,6 +26,5 @@ internal annotation class ColorPickerDsl * @return new instance of [ColorPickerDialog]. */ @JvmSynthetic -@ColorPickerDsl inline fun Context.colorPickerDialog(block: ColorPickerDialog.Builder.() -> Unit) = ColorPickerDialog.Builder(this).apply(block)