diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 63a6a81..5017790 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -3,7 +3,6 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget @Suppress("DSL_SCOPE_VIOLATION") // TODO: Remove once KTIJ-19369 is fixed plugins { alias(libs.plugins.com.android.application) - alias(libs.plugins.org.jetbrains.kotlin.android) id("tripitacaandroid.android.hilt") id("tripitacaandroid.android.application.compose") alias(libs.plugins.kotlinx.serialization) diff --git a/build-logic/convention/src/main/java/AndroidFeatureConventionPlugin.kt b/build-logic/convention/src/main/java/AndroidFeatureConventionPlugin.kt index 703dc44..780ea50 100644 --- a/build-logic/convention/src/main/java/AndroidFeatureConventionPlugin.kt +++ b/build-logic/convention/src/main/java/AndroidFeatureConventionPlugin.kt @@ -1,11 +1,12 @@ -import com.android.build.gradle.LibraryExtension +import com.android.build.api.dsl.LibraryExtension import com.danielwaiguru.tripicaandroid.convention.getPluginId import com.danielwaiguru.tripicaandroid.convention.libs import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.kotlin.dsl.configure import org.gradle.kotlin.dsl.dependencies + class AndroidFeatureConventionPlugin : Plugin { override fun apply(target: Project) { with(target) { diff --git a/build-logic/convention/src/main/java/AndroidLibraryComposeConventionPlugin.kt b/build-logic/convention/src/main/java/AndroidLibraryComposeConventionPlugin.kt index 8c1514e..8eb5cb1 100644 --- a/build-logic/convention/src/main/java/AndroidLibraryComposeConventionPlugin.kt +++ b/build-logic/convention/src/main/java/AndroidLibraryComposeConventionPlugin.kt @@ -1,10 +1,11 @@ -import com.android.build.gradle.LibraryExtension +import com.android.build.api.dsl.LibraryExtension import com.danielwaiguru.tripicaandroid.convention.configureAndroidCompose import com.danielwaiguru.tripicaandroid.convention.getPluginId import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.kotlin.dsl.getByType + class AndroidLibraryComposeConventionPlugin : Plugin { override fun apply(target: Project) { with(target) { diff --git a/build-logic/convention/src/main/java/AndroidLibraryConventionPlugin.kt b/build-logic/convention/src/main/java/AndroidLibraryConventionPlugin.kt index c897794..b344a37 100644 --- a/build-logic/convention/src/main/java/AndroidLibraryConventionPlugin.kt +++ b/build-logic/convention/src/main/java/AndroidLibraryConventionPlugin.kt @@ -1,6 +1,6 @@ +import com.android.build.api.dsl.LibraryExtension import com.android.build.api.variant.LibraryAndroidComponentsExtension -import com.android.build.gradle.LibraryExtension import com.danielwaiguru.tripicaandroid.convention.configureKotlinAndroid import com.danielwaiguru.tripicaandroid.convention.configurePrintApksTask import com.danielwaiguru.tripicaandroid.convention.libs @@ -15,7 +15,6 @@ class AndroidLibraryConventionPlugin : Plugin { with(target) { with(pluginManager) { apply("com.android.library") - apply("org.jetbrains.kotlin.android") } extensions.configure { @@ -37,6 +36,7 @@ class AndroidLibraryConventionPlugin : Plugin { dependencies { add("androidTestImplementation", kotlin("test")) add("testImplementation", kotlin("test")) + add("testImplementation", libs.findLibrary("junit4").get()) add("coreLibraryDesugaring", libs.findLibrary("android-desugarJdkLibs").get()) "implementation"(libs.findLibrary("timber").get()) } diff --git a/build-logic/convention/src/main/java/com/danielwaiguru/tripicaandroid/convention/AndroidCompose.kt b/build-logic/convention/src/main/java/com/danielwaiguru/tripicaandroid/convention/AndroidCompose.kt index 4935c1c..cb8c9f1 100644 --- a/build-logic/convention/src/main/java/com/danielwaiguru/tripicaandroid/convention/AndroidCompose.kt +++ b/build-logic/convention/src/main/java/com/danielwaiguru/tripicaandroid/convention/AndroidCompose.kt @@ -12,29 +12,26 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile * Configure Compose-specific options */ internal fun Project.configureAndroidCompose( - commonExtension: CommonExtension<*, *, *, *, *, *>, + commonExtension: CommonExtension, ) { - commonExtension.apply { - buildFeatures { - compose = true - } - val libs = extensions.getByType().named("libs") - packaging { - resources { - excludes += "/META-INF/{AL2.0,LGPL2.1}" - excludes += "META-INF/*.md" - } + commonExtension.buildFeatures.apply { + compose = true + } + commonExtension.packaging.apply { + resources { + excludes += "/META-INF/{AL2.0,LGPL2.1}" + excludes += "META-INF/*.md" } + } - dependencies { - val bom = libs.findLibrary("compose-bom").get() - add("implementation", platform(bom)) - add("implementation", libs.findBundle("compose").get()) + this@configureAndroidCompose.dependencies { + val bom = libs.findLibrary("compose-bom").get() + add("implementation", platform(bom)) + add("implementation", libs.findBundle("compose").get()) - add("androidTestImplementation", platform(bom)) - add("androidTestImplementation", libs.findLibrary("ui-test-junit4").get()) + add("androidTestImplementation", platform(bom)) + add("androidTestImplementation", libs.findLibrary("ui-test-junit4").get()) - add("debugImplementation", libs.findBundle("compose-testing-manifest").get()) - } + add("debugImplementation", libs.findBundle("compose-testing-manifest").get()) } } diff --git a/build-logic/convention/src/main/java/com/danielwaiguru/tripicaandroid/convention/KotlinAndroid.kt b/build-logic/convention/src/main/java/com/danielwaiguru/tripicaandroid/convention/KotlinAndroid.kt index 58d9cdc..d7a5068 100644 --- a/build-logic/convention/src/main/java/com/danielwaiguru/tripicaandroid/convention/KotlinAndroid.kt +++ b/build-logic/convention/src/main/java/com/danielwaiguru/tripicaandroid/convention/KotlinAndroid.kt @@ -18,13 +18,13 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension * Configure base Kotlin with Android options */ internal fun Project.configureKotlinAndroid( - commonExtension: CommonExtension<*, *, *, *, *, *>, + commonExtension: CommonExtension, ) { commonExtension.apply { compileSdk = libs.findVersion("compileSdk").get().toString().toInt() - defaultConfig { + defaultConfig.apply { minSdk = libs.findVersion("minSdk").get().toString().toInt() - buildTypes { + buildTypes.apply { getByName("release") { isMinifyEnabled = true } @@ -37,7 +37,7 @@ internal fun Project.configureKotlinAndroid( } } - compileOptions { + compileOptions.apply { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 isCoreLibraryDesugaringEnabled = true diff --git a/build.gradle.kts b/build.gradle.kts index 9fb3762..a5ff366 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -2,7 +2,6 @@ @Suppress("DSL_SCOPE_VIOLATION") // TODO: Remove once KTIJ-19369 is fixed plugins { alias(libs.plugins.com.android.application) apply false - alias(libs.plugins.org.jetbrains.kotlin.android) apply false alias(libs.plugins.com.android.library) apply false alias(libs.plugins.org.jetbrains.kotlin.jvm) apply false alias(libs.plugins.ksp) apply false diff --git a/features/booking/lib/src/main/java/com/danielwaiguru/tripitacaandroid/booking/lib/BookingScreen.kt b/features/booking/lib/src/main/java/com/danielwaiguru/tripitacaandroid/booking/lib/BookingScreen.kt index 86f87c2..6441580 100644 --- a/features/booking/lib/src/main/java/com/danielwaiguru/tripitacaandroid/booking/lib/BookingScreen.kt +++ b/features/booking/lib/src/main/java/com/danielwaiguru/tripitacaandroid/booking/lib/BookingScreen.kt @@ -82,7 +82,7 @@ fun BookingScreen( LaunchedEffect(key1 = state.errorMessage) { val error = state.errorMessage if (error.isNullOrBlank().not()) { - snackbarHostState.showSnackbar(error!!) + snackbarHostState.showSnackbar(error) } } val scope = rememberCoroutineScope() diff --git a/features/properties/lib/src/main/java/com/danielwaiguru/tripitacaandroid/properties/lib/presentation/propertieslisting/PropertiesViewModel.kt b/features/properties/lib/src/main/java/com/danielwaiguru/tripitacaandroid/properties/lib/presentation/propertieslisting/PropertiesViewModel.kt index d5fcc0a..c4d9762 100644 --- a/features/properties/lib/src/main/java/com/danielwaiguru/tripitacaandroid/properties/lib/presentation/propertieslisting/PropertiesViewModel.kt +++ b/features/properties/lib/src/main/java/com/danielwaiguru/tripitacaandroid/properties/lib/presentation/propertieslisting/PropertiesViewModel.kt @@ -49,7 +49,7 @@ internal class PropertiesViewModel @Inject constructor( state.properties }, username = if (user?.displayName.isNullOrBlank().not()) { - user?.displayName ?: "Anonymous" + user.displayName ?: "Anonymous" } else { "Anonymous" }, diff --git a/gradle/gradle-daemon-jvm.properties b/gradle/gradle-daemon-jvm.properties new file mode 100644 index 0000000..5c34300 --- /dev/null +++ b/gradle/gradle-daemon-jvm.properties @@ -0,0 +1,13 @@ +#This file is generated by updateDaemonJvm +toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/56a19bc915b9ba2eb62ba7554c61b919/redirect +toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/398ffe3949748bfb1d5636f023d228fd/redirect +toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/56a19bc915b9ba2eb62ba7554c61b919/redirect +toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/398ffe3949748bfb1d5636f023d228fd/redirect +toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/e99bae143b75f9a10ead10248f02055e/redirect +toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/04e088f8677de3b384108493cc9481d0/redirect +toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/56a19bc915b9ba2eb62ba7554c61b919/redirect +toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/398ffe3949748bfb1d5636f023d228fd/redirect +toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/e55dccbfe27cb97945148c61a39c89c5/redirect +toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/dbd05c4936d573642f94cd149e1356c8/redirect +toolchainVendor=JETBRAINS +toolchainVersion=21 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index df649fd..acf0595 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,25 +1,18 @@ [versions] -agp = "8.13.2" +agp = "9.1.0" kotlin = "2.3.20" ksp = "2.3.6" -core-ktx = "1.17.0" -junit = "4.13.2" -androidx-test-ext-junit = "1.1.5" +core-ktx = "1.18.0" espresso-core = "3.7.0" leakcanaryAndroid = "2.14" -lifecycle-runtime-ktx = "2.6.2" activity-compose = "1.13.0" compose-bom = "2026.03.01" appcompat = "1.7.1" lottieCompose = "6.7.1" material = "1.13.0" -hilt = "2.58" +hilt = "2.59.2" hiltExt = "1.3.0" timber = "5.0.1" -retrofit = "2.9.0" -okhttp = "4.12.0" -coilCompose = "2.4.0" -chucker = "4.0.0" kotlinxCoroutines = "1.10.2" junit4Ext = "1.3.0" junit4 = "4.13.2" @@ -35,18 +28,16 @@ googleFont = "1.10.6" androidxNavigation = "2.9.7" shimmer = "0.5.0" googleAccompanist = "0.37.3" -mapsCompose = "8.1.0" -ktlint = "14.0.1" +mapsCompose = "8.2.2" +ktlint = "14.2.0" spotless = "8.4.0" -room = "2.6.1" -targetSdk = "35" -compileSdk = "36" +targetSdk = "36" +compileSdk = "37" minSdk = "24" playServicesLocation = "21.3.0" androidDesugarJdkLibs = "2.1.5" -jacoco = "0.8.7" googleAuth = "21.5.1" -protobuf = "4.33.5" +protobuf = "4.34.1" protobufPlugin = "0.9.6" datastore = "1.2.1" mapsplatformSecrets = "2.0.1" @@ -133,7 +124,6 @@ android-desugarJdkLibs = { group = "com.android.tools", name = "desugar_jdk_libs [plugins] com-android-application = { id = "com.android.application", version.ref = "agp" } -org-jetbrains-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } com-android-library = { id = "com.android.library", version.ref = "agp" } org-jetbrains-kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" } diff --git a/settings.gradle.kts b/settings.gradle.kts index 52e49af..625fc9a 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -7,6 +7,9 @@ pluginManagement { maven { url = uri("https://jitpack.io") } } } +plugins { + id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0" +} dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories {