From 1849f72cb6a4377c7f0f0b4a021a217199052bdf Mon Sep 17 00:00:00 2001 From: Adrian Kuta Date: Mon, 28 Apr 2025 13:43:58 +0200 Subject: [PATCH] Refactor: Update dependencies and Gradle configuration This commit updates various dependencies and reconfigures Gradle settings to newer versions and standards. Specific changes include: - Updated Android Gradle Plugin to 8.6.1 - Updated Kotlin to 2.1.20 - Updated Compose Compiler to 1.5.15 - Updated Compose BOM to 2025.04.01 - Updated Hilt to 2.54 - Updated KSP to 2.1.20-2.0.0 - Updated other dependencies like Navigation, Core-Ktx, Lifecycle, Activity Compose, Room, Paging, Coil, Serialization Json - Migrated to Java 21 - Applied Compose plugin - Updated target and compile SDK to 35 - updated jvm target to Java 21 --- .idea/AndroidProjectSystem.xml | 6 ++ .idea/appInsightsSettings.xml | 26 +++++++ .idea/gradle.xml | 2 +- .idea/kotlinc.xml | 2 +- .idea/misc.xml | 3 +- .idea/runConfigurations.xml | 17 ++++ app/build.gradle.kts | 4 +- build-logic/convention/build.gradle.kts | 10 ++- .../main/kotlin/ComposeConventionPlugin.kt | 1 + .../dev.adriankuta.convention/Android.kt | 6 +- .../dev.adriankuta.convention/Compose.kt | 11 +++ build.gradle.kts | 1 + gradle/libs.versions.toml | 77 ++++++++++--------- 13 files changed, 118 insertions(+), 48 deletions(-) create mode 100644 .idea/AndroidProjectSystem.xml create mode 100644 .idea/appInsightsSettings.xml create mode 100644 .idea/runConfigurations.xml diff --git a/.idea/AndroidProjectSystem.xml b/.idea/AndroidProjectSystem.xml new file mode 100644 index 0000000..4a53bee --- /dev/null +++ b/.idea/AndroidProjectSystem.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/appInsightsSettings.xml b/.idea/appInsightsSettings.xml new file mode 100644 index 0000000..371f2e2 --- /dev/null +++ b/.idea/appInsightsSettings.xml @@ -0,0 +1,26 @@ + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 6109387..ad0329e 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -16,6 +16,7 @@ + - diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml index 148fdd2..131e44d 100644 --- a/.idea/kotlinc.xml +++ b/.idea/kotlinc.xml @@ -1,6 +1,6 @@ - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 8978d23..74dd639 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,7 @@ + - + diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml new file mode 100644 index 0000000..16660f1 --- /dev/null +++ b/.idea/runConfigurations.xml @@ -0,0 +1,17 @@ + + + + + + \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts index c69c3cc..8f9c63d 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -8,7 +8,7 @@ android { defaultConfig { applicationId = "dev.adriankuta.pixabay" - targetSdk = 34 + targetSdk = 35 versionCode = 1 versionName = "1.0" } @@ -23,7 +23,7 @@ android { } } kotlinOptions { - jvmTarget = JavaVersion.VERSION_17.toString() + jvmTarget = JavaVersion.VERSION_21.toString() } buildFeatures { buildConfig = true diff --git a/build-logic/convention/build.gradle.kts b/build-logic/convention/build.gradle.kts index 2f42a68..d09e9df 100644 --- a/build-logic/convention/build.gradle.kts +++ b/build-logic/convention/build.gradle.kts @@ -21,13 +21,15 @@ plugins { group = "dev.adriankuta.convention.buildlogic" java { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 } dependencies { - compileOnly(libs.android.tools.build.gradle.plugin) - compileOnly(libs.kotlin.gradle.plugin) + compileOnly(libs.android.gradlePlugin) + compileOnly(libs.compose.gradlePlugin) + compileOnly(libs.kotlin.gradlePlugin) + compileOnly(libs.ksp.gradlePlugin) } gradlePlugin { diff --git a/build-logic/convention/src/main/kotlin/ComposeConventionPlugin.kt b/build-logic/convention/src/main/kotlin/ComposeConventionPlugin.kt index c93820f..e776af9 100644 --- a/build-logic/convention/src/main/kotlin/ComposeConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/ComposeConventionPlugin.kt @@ -7,6 +7,7 @@ import org.gradle.kotlin.dsl.getByType class ComposeConventionPlugin : Plugin { override fun apply(target: Project) { with(target) { + val extension = extensions.getByType() configureCompose(extension) } diff --git a/build-logic/convention/src/main/kotlin/dev.adriankuta.convention/Android.kt b/build-logic/convention/src/main/kotlin/dev.adriankuta.convention/Android.kt index 3c80a54..5e52e56 100644 --- a/build-logic/convention/src/main/kotlin/dev.adriankuta.convention/Android.kt +++ b/build-logic/convention/src/main/kotlin/dev.adriankuta.convention/Android.kt @@ -6,7 +6,7 @@ import org.gradle.api.JavaVersion @Suppress("UnstableApiUsage") internal fun configureAndroid(commonExtension: CommonExtension<*, *, *, *, *>) { commonExtension.apply { - compileSdk = 34 + compileSdk = 35 defaultConfig { minSdk = 24 @@ -19,8 +19,8 @@ internal fun configureAndroid(commonExtension: CommonExtension<*, *, *, *, *>) { } compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 } packaging { resources { diff --git a/build-logic/convention/src/main/kotlin/dev.adriankuta.convention/Compose.kt b/build-logic/convention/src/main/kotlin/dev.adriankuta.convention/Compose.kt index bae40af..8d7665f 100644 --- a/build-logic/convention/src/main/kotlin/dev.adriankuta.convention/Compose.kt +++ b/build-logic/convention/src/main/kotlin/dev.adriankuta.convention/Compose.kt @@ -4,8 +4,12 @@ import com.android.build.gradle.BaseExtension import org.gradle.api.Project import org.gradle.api.artifacts.VersionCatalog import org.gradle.api.artifacts.VersionCatalogsExtension +import org.gradle.kotlin.dsl.assign +import org.gradle.kotlin.dsl.configure import org.gradle.kotlin.dsl.dependencies import org.gradle.kotlin.dsl.getByType +import org.jetbrains.kotlin.compose.compiler.gradle.ComposeCompilerGradlePluginExtension +import kotlin.with @Suppress("UnstableApiUsage") internal fun Project.configureCompose(commonExtension: BaseExtension) { @@ -14,8 +18,15 @@ internal fun Project.configureCompose(commonExtension: BaseExtension) { compose = true } + with(pluginManager) { + apply("org.jetbrains.kotlin.plugin.compose") + } + val libs: VersionCatalog = extensions.getByType().named("libs") + /*extensions.configure { + }*/ + composeOptions { kotlinCompilerExtensionVersion = libs.findVersion("composeCompiler").get().toString() diff --git a/build.gradle.kts b/build.gradle.kts index 81ad097..6d7b702 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,4 +4,5 @@ plugins { alias(libs.plugins.kotlin.android) apply false alias(libs.plugins.hilt) apply false alias(libs.plugins.ksp) apply false + alias(libs.plugins.compose.compiler) apply false } \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 78d91e7..7522baa 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,77 +1,82 @@ [versions] -androidxNavigation = "2.7.7" +androidxNavigation = "2.8.9" androidGradlePlugin = "8.1.4" -agp = "8.6.0-rc01" -coilCompose = "2.6.0" -composeCompiler = "1.5.14" -kotlin = "1.9.24" +agp = "8.6.1" +coilCompose = "2.7.0" +composeCompiler = "1.5.15" +kotlin = "2.1.20" kotlinSerialization = "2.0.0" -coreKtx = "1.13.1" +coreKtx = "1.16.0" androidxHilt = "1.2.0" junit = "4.13.2" junitVersion = "1.2.1" espressoCore = "3.6.1" -androidxLifecycle = "2.8.3" -activityCompose = "1.9.0" -composeBom = "2024.06.00" -kotlinxSerializationJson = "1.6.0" +androidxLifecycle = "2.8.7" +activityCompose = "1.10.1" +composeBom = "2025.04.01" +kotlinxSerializationJson = "1.8.0" ktor = "2.3.12" okhttpBom = "4.12.0" -pagingCompose = "3.3.0" -room = "2.6.1" +pagingCompose = "3.3.6" +room = "2.7.1" slf4jAndroid = "1.7.36" timber = "5.0.1" -hilt = "2.51.1" -ksp = "1.9.24-1.0.20" +hilt = "2.54" +ksp = "2.1.20-2.0.0" [libraries] -android-tools-build-gradle-plugin = { group = "com.android.tools.build", name = "gradle", version.ref = "androidGradlePlugin" } +androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "activityCompose" } androidx-compiler = { module = "androidx.compose.compiler:compiler", version.ref = "composeCompiler" } +androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBom" } androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } -androidx-hilt-navigation-compose = { group = "androidx.hilt", name = "hilt-navigation-compose", version.ref = "androidxHilt" } -androidx-paging-compose = { group = "androidx.paging", name = "paging-compose", version.ref = "pagingCompose" } -androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = "room" } -androidx-room-runtime = { module = "androidx.room:room-runtime", version.ref = "room" } -androidx-room-ktx = { group = "androidx.room", name = "room-ktx", version.ref = "room" } -androidx-room-paging = { group = "androidx.room", name = "room-paging", version.ref = "room" } -coil-compose = { module = "io.coil-kt:coil-compose", version.ref = "coilCompose" } -kotlin-gradle-plugin = { group = "org.jetbrains.kotlin", name = "kotlin-gradle-plugin", version.ref = "kotlin" } -junit = { group = "junit", name = "junit", version.ref = "junit" } -androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" } androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" } +androidx-hilt-navigation-compose = { group = "androidx.hilt", name = "hilt-navigation-compose", version.ref = "androidxHilt" } +androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" } androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "androidxLifecycle" } androidx-lifecycle-viewmodel-compose = { module = "androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "androidxLifecycle" } -androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "activityCompose" } -androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBom" } +androidx-material3 = { group = "androidx.compose.material3", name = "material3" } androidx-navigation-compose = { group = "androidx.navigation", name = "navigation-compose", version.ref = "androidxNavigation" } +androidx-paging-compose = { group = "androidx.paging", name = "paging-compose", version.ref = "pagingCompose" } +androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = "room" } +androidx-room-ktx = { group = "androidx.room", name = "room-ktx", version.ref = "room" } +androidx-room-paging = { group = "androidx.room", name = "room-paging", version.ref = "room" } +androidx-room-runtime = { module = "androidx.room:room-runtime", version.ref = "room" } androidx-ui = { group = "androidx.compose.ui", name = "ui" } androidx-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" } +androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" } +androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } androidx-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" } androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" } -androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } -androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" } -androidx-material3 = { group = "androidx.compose.material3", name = "material3" } +coil-compose = { module = "io.coil-kt:coil-compose", version.ref = "coilCompose" } +hilt-android = { group = "com.google.dagger", name = "hilt-android", version.ref = "hilt" } +hilt-compiler = { group = "com.google.dagger", name = "hilt-compiler", version.ref = "hilt" } +junit = { group = "junit", name = "junit", version.ref = "junit" } kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinxSerializationJson" } ktor-client-android = { group = "io.ktor", name = "ktor-client-android", version.ref = "ktor" } -ktor-client-resources = { group = "io.ktor", name = "ktor-client-resources", version.ref = "ktor" } ktor-client-content-negotiation = { group = "io.ktor", name = "ktor-client-content-negotiation", version.ref = "ktor" } ktor-client-logging = { group = "io.ktor", name = "ktor-client-logging", version.ref = "ktor" } +ktor-client-resources = { group = "io.ktor", name = "ktor-client-resources", version.ref = "ktor" } ktor-serialization-kotlinx-json = { group = "io.ktor", name = "ktor-serialization-kotlinx-json", version.ref = "ktor" } logging-interceptor = { module = "com.squareup.okhttp3:logging-interceptor" } okhttp = { module = "com.squareup.okhttp3:okhttp" } okhttp-bom = { module = "com.squareup.okhttp3:okhttp-bom", version.ref = "okhttpBom" } slf4j-android = { module = "org.slf4j:slf4j-android", version.ref = "slf4jAndroid" } timber = { module = "com.jakewharton.timber:timber", version.ref = "timber" } -hilt-android = { group = "com.google.dagger", name = "hilt-android", version.ref = "hilt" } -hilt-compiler = { group = "com.google.dagger", name = "hilt-compiler", version.ref = "hilt" } + +#Build plugins +android-gradlePlugin = { group = "com.android.tools.build", name = "gradle", version.ref = "androidGradlePlugin" } +compose-gradlePlugin = { module = "org.jetbrains.kotlin:compose-compiler-gradle-plugin", version.ref = "kotlin" } +kotlin-gradlePlugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" } +ksp-gradlePlugin = { group = "com.google.devtools.ksp", name = "com.google.devtools.ksp.gradle.plugin", version.ref = "ksp" } [plugins] android-application = { id = "com.android.application", version.ref = "agp" } -kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } -hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" } +compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } convention-android-application = { id = "convention.android.application", version = "unspecified" } convention-android-library = { id = "convention.android.library", version = "unspecified" } convention-compose = { id = "convention.compose", version = "unspecified" } -ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } +hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" } +kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlinSerialization" } +ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }