diff --git a/app/build.gradle.kts b/app/build.gradle.kts index deead884..2ca3897f 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,7 +1,3 @@ plugins { alias(libs.plugins.convention.androidAppPlugin) } - -android { - namespace = "com.rtbishop.look4sat" -} diff --git a/build-logic/convention/build.gradle.kts b/build-logic/convention/build.gradle.kts index 053b950e..8317f235 100644 --- a/build-logic/convention/build.gradle.kts +++ b/build-logic/convention/build.gradle.kts @@ -1,8 +1,6 @@ import org.gradle.initialization.DependenciesAccessors import org.gradle.kotlin.dsl.support.serviceOf -//import org.jetbrains.kotlin.gradle.tasks.KotlinCompile - plugins { `kotlin-dsl` } @@ -10,7 +8,6 @@ plugins { dependencies { compileOnly(libs.android.gradlePlugin) compileOnly(libs.kotlin.gradlePlugin) - gradle.serviceOf().classes.asFiles.forEach { compileOnly(files(it.absolutePath)) } @@ -25,21 +22,6 @@ tasks { group = "com.rtbishop.look4sat.build_logic.convention" -//kotlin { -// jvmToolchain(libs.versions.jdkVersion.get().toInt()) -//} - -//java { -// sourceCompatibility = JavaVersion.VERSION_17 -// targetCompatibility = JavaVersion.VERSION_17 -//} -// -//tasks.withType().configureEach { -// kotlinOptions { -// jvmTarget = JavaVersion.VERSION_17.toString() -// } -//} - gradlePlugin { plugins { register("androidAppPlugin") { diff --git a/build-logic/convention/src/main/java/com/rtbishop/look4sat/convention/AndroidAppPlugin.kt b/build-logic/convention/src/main/java/com/rtbishop/look4sat/convention/AndroidAppPlugin.kt index 8e4036c3..b26e1a1e 100644 --- a/build-logic/convention/src/main/java/com/rtbishop/look4sat/convention/AndroidAppPlugin.kt +++ b/build-logic/convention/src/main/java/com/rtbishop/look4sat/convention/AndroidAppPlugin.kt @@ -17,44 +17,29 @@ */ package com.rtbishop.look4sat.convention -import com.android.build.api.dsl.ApplicationExtension import org.gradle.api.Plugin import org.gradle.api.Project -import org.gradle.kotlin.dsl.configure import org.gradle.kotlin.dsl.dependencies @Suppress("Unused") -class AndroidAppPlugin : Plugin { +internal class AndroidAppPlugin : Plugin { override fun apply(target: Project) { with(target) { - with(pluginManager) { - alias(libs.plugins.android.application) - alias(libs.plugins.compose.compiler) - } - configureKotlinLibrary() - extensions.configure { - configureAndroidApp(this) - } + setupAndroidApplication() + setupComposeFeature() + setupKotlinToolchain() + setupAndroidTestDependencies() + setupTestDependencies() dependencies { IMPLEMENTATION(project(":core:data")) IMPLEMENTATION(project(":core:domain")) IMPLEMENTATION(project(":core:presentation")) - IMPLEMENTATION(project(":feature:map")) IMPLEMENTATION(project(":feature:passes")) IMPLEMENTATION(project(":feature:radar")) IMPLEMENTATION(project(":feature:satellites")) IMPLEMENTATION(project(":feature:settings")) - IMPLEMENTATION(libs.androidx.core.splashscreen) - IMPLEMENTATION(platform(libs.compose.bom)) - IMPLEMENTATION(libs.bundles.composeAll) - IMPLEMENTATION(libs.other.osmdroid) - DEBUG_IMPLEMENTATION(libs.bundles.composeDebug) - - TEST_IMPLEMENTATION(libs.test.coroutines) - TEST_IMPLEMENTATION(libs.test.junit4) - ANDROID_TEST_IMPLEMENTATION(libs.bundles.androidTest) } } } diff --git a/build-logic/convention/src/main/java/com/rtbishop/look4sat/convention/AndroidLibraryPlugin.kt b/build-logic/convention/src/main/java/com/rtbishop/look4sat/convention/AndroidLibraryPlugin.kt index 102e0b2e..76f0c479 100644 --- a/build-logic/convention/src/main/java/com/rtbishop/look4sat/convention/AndroidLibraryPlugin.kt +++ b/build-logic/convention/src/main/java/com/rtbishop/look4sat/convention/AndroidLibraryPlugin.kt @@ -17,39 +17,29 @@ */ package com.rtbishop.look4sat.convention -import com.android.build.api.dsl.LibraryExtension import org.gradle.api.Plugin import org.gradle.api.Project -import org.gradle.kotlin.dsl.configure import org.gradle.kotlin.dsl.dependencies @Suppress("Unused") -class AndroidLibraryPlugin : Plugin { +internal class AndroidLibraryPlugin : Plugin { override fun apply(target: Project) { with(target) { with(pluginManager) { - alias(libs.plugins.android.library) alias(libs.plugins.google.ksp) } -// setupAndroidModule(isApplication = false) -// setupBaseDependencies() - configureKotlinLibrary() - extensions.configure { - configureAndroidLibrary(this) - } + setupCommonLibrary() + setupKotlinToolchain() + setupAndroidTestDependencies() + setupTestDependencies() dependencies { IMPLEMENTATION(project(":core:domain")) - IMPLEMENTATION(libs.androidx.core.ktx) IMPLEMENTATION(libs.androidx.room.asProvider()) IMPLEMENTATION(libs.androidx.room.runtime) KSP(libs.androidx.room.compiler) IMPLEMENTATION(libs.other.coroutines) IMPLEMENTATION(libs.other.okhttp) - - TEST_IMPLEMENTATION(libs.test.coroutines) - TEST_IMPLEMENTATION(libs.test.junit4) - ANDROID_TEST_IMPLEMENTATION(libs.bundles.androidTest) } } } diff --git a/build-logic/convention/src/main/java/com/rtbishop/look4sat/convention/ComposeFeaturePlugin.kt b/build-logic/convention/src/main/java/com/rtbishop/look4sat/convention/ComposeFeaturePlugin.kt index 41bc53e4..ada90e06 100644 --- a/build-logic/convention/src/main/java/com/rtbishop/look4sat/convention/ComposeFeaturePlugin.kt +++ b/build-logic/convention/src/main/java/com/rtbishop/look4sat/convention/ComposeFeaturePlugin.kt @@ -17,47 +17,22 @@ */ package com.rtbishop.look4sat.convention -import com.android.build.api.dsl.LibraryExtension import org.gradle.api.Plugin import org.gradle.api.Project -import org.gradle.kotlin.dsl.configure import org.gradle.kotlin.dsl.dependencies @Suppress("Unused") -class ComposeFeaturePlugin : Plugin { +internal class ComposeFeaturePlugin : Plugin { override fun apply(target: Project) { with(target) { - with(pluginManager) { - alias(libs.plugins.android.library) - alias(libs.plugins.compose.compiler) - } - configureKotlinLibrary() - extensions.configure { - configureAndroidLibrary(this) - configureComposeFeature(this) - } + setupCommonLibrary() + setupComposeFeature() + setupKotlinToolchain() + setupAndroidTestDependencies() + setupTestDependencies() dependencies { IMPLEMENTATION(project(":core:domain")) IMPLEMENTATION(project(":core:presentation")) - - IMPLEMENTATION(libs.androidx.core.splashscreen) - IMPLEMENTATION(platform(libs.compose.bom)) - IMPLEMENTATION(libs.compose.activity) - IMPLEMENTATION(libs.compose.lifecycle) - IMPLEMENTATION(libs.compose.navigation) - IMPLEMENTATION(libs.compose.viewmodel) - IMPLEMENTATION(libs.compose.animation) - IMPLEMENTATION(libs.compose.material3) -// IMPLEMENTATION(libs.compose.material3.asProvider()) - IMPLEMENTATION(libs.compose.material3.navigation) - IMPLEMENTATION(libs.compose.runtime) - IMPLEMENTATION(libs.compose.tooling) - IMPLEMENTATION(libs.other.osmdroid) - DEBUG_IMPLEMENTATION(libs.bundles.composeDebug) - - TEST_IMPLEMENTATION(libs.test.coroutines) - TEST_IMPLEMENTATION(libs.test.junit4) - ANDROID_TEST_IMPLEMENTATION(libs.bundles.androidTest) } } } diff --git a/build-logic/convention/src/main/java/com/rtbishop/look4sat/convention/ComposeLibraryPlugin.kt b/build-logic/convention/src/main/java/com/rtbishop/look4sat/convention/ComposeLibraryPlugin.kt index 4158800b..6cb05d1e 100644 --- a/build-logic/convention/src/main/java/com/rtbishop/look4sat/convention/ComposeLibraryPlugin.kt +++ b/build-logic/convention/src/main/java/com/rtbishop/look4sat/convention/ComposeLibraryPlugin.kt @@ -17,46 +17,21 @@ */ package com.rtbishop.look4sat.convention -import com.android.build.api.dsl.LibraryExtension import org.gradle.api.Plugin import org.gradle.api.Project -import org.gradle.kotlin.dsl.configure import org.gradle.kotlin.dsl.dependencies @Suppress("Unused") -class ComposeLibraryPlugin : Plugin { +internal class ComposeLibraryPlugin : Plugin { override fun apply(target: Project) { with(target) { - with(pluginManager) { - alias(libs.plugins.android.library) - alias(libs.plugins.compose.compiler) - } - configureKotlinLibrary() - extensions.configure { - configureAndroidLibrary(this) - configureComposeFeature(this) - } + setupCommonLibrary() + setupComposeFeature() + setupKotlinToolchain() + setupAndroidTestDependencies() + setupTestDependencies() dependencies { IMPLEMENTATION(project(":core:domain")) - - IMPLEMENTATION(libs.androidx.core.splashscreen) - IMPLEMENTATION(platform(libs.compose.bom)) - IMPLEMENTATION(libs.compose.activity) - IMPLEMENTATION(libs.compose.lifecycle) - IMPLEMENTATION(libs.compose.navigation) - IMPLEMENTATION(libs.compose.viewmodel) - IMPLEMENTATION(libs.compose.animation) - IMPLEMENTATION(libs.compose.material3) -// IMPLEMENTATION(libs.compose.material3.asProvider()) - IMPLEMENTATION(libs.compose.material3.navigation) - IMPLEMENTATION(libs.compose.runtime) - IMPLEMENTATION(libs.compose.tooling) - IMPLEMENTATION(libs.other.osmdroid) - DEBUG_IMPLEMENTATION(libs.bundles.composeDebug) - - TEST_IMPLEMENTATION(libs.test.coroutines) - TEST_IMPLEMENTATION(libs.test.junit4) - ANDROID_TEST_IMPLEMENTATION(libs.bundles.androidTest) } } } diff --git a/build-logic/convention/src/main/java/com/rtbishop/look4sat/convention/KotlinLibraryPlugin.kt b/build-logic/convention/src/main/java/com/rtbishop/look4sat/convention/KotlinLibraryPlugin.kt index 43744a65..c33b6d7a 100644 --- a/build-logic/convention/src/main/java/com/rtbishop/look4sat/convention/KotlinLibraryPlugin.kt +++ b/build-logic/convention/src/main/java/com/rtbishop/look4sat/convention/KotlinLibraryPlugin.kt @@ -22,18 +22,17 @@ import org.gradle.api.Project import org.gradle.kotlin.dsl.dependencies @Suppress("Unused") -class KotlinLibraryPlugin : Plugin { +internal class KotlinLibraryPlugin : Plugin { override fun apply(target: Project) { with(target) { with(pluginManager) { alias(libs.plugins.kotlin.jvm) } - configureKotlinLibrary() + setupKotlinToolchain() + setupTestDependencies() dependencies { - implementation(libs.other.coroutines) - implementation(libs.other.json) - testImplementation(libs.test.coroutines) - testImplementation(libs.test.junit4) + IMPLEMENTATION(libs.other.coroutines) + IMPLEMENTATION(libs.other.json) } } } diff --git a/build-logic/convention/src/main/java/com/rtbishop/look4sat/convention/PluginSetupUtils.kt b/build-logic/convention/src/main/java/com/rtbishop/look4sat/convention/PluginSetupUtils.kt index 00c890d8..6c2e919d 100644 --- a/build-logic/convention/src/main/java/com/rtbishop/look4sat/convention/PluginSetupUtils.kt +++ b/build-logic/convention/src/main/java/com/rtbishop/look4sat/convention/PluginSetupUtils.kt @@ -18,15 +18,11 @@ package com.rtbishop.look4sat.convention import com.android.build.api.dsl.ApplicationExtension -import com.android.build.api.dsl.LibraryExtension +import com.android.build.api.dsl.CommonExtension import org.gradle.accessors.dm.LibrariesForLibs -import org.gradle.api.JavaVersion import org.gradle.api.Project -import org.gradle.api.artifacts.MinimalExternalModuleDependency -import org.gradle.api.artifacts.dsl.DependencyHandler import org.gradle.api.plugins.PluginManager import org.gradle.api.provider.Provider -import org.gradle.api.provider.ProviderConvertible import org.gradle.kotlin.dsl.accessors.runtime.extensionOf import org.gradle.kotlin.dsl.configure import org.gradle.kotlin.dsl.dependencies @@ -40,71 +36,21 @@ internal const val KSP = "ksp" internal const val TEST_IMPLEMENTATION = "testImplementation" internal val Project.libs - // get(): VersionCatalog = extensions.getByType().named("libs") get(): LibrariesForLibs = extensionOf(this, "libs") as LibrariesForLibs -internal fun Project.configureKotlinLibrary() { -// kotlinExtension.jvmToolchain(libs.findVersion("jdkVersion").get().requiredVersion.toInt()) - kotlinExtension.jvmToolchain(libs.versions.jdkVersion.get().toInt()) -// tasks.withType(AbstractTestTask::class.java).configureEach { setProperty("failOnNoDiscoveredTests", false) } -} - -fun PluginManager.alias(notation: Provider) { +internal fun PluginManager.alias(notation: Provider) { apply(notation.get().pluginId) } -fun PluginManager.alias(notation: ProviderConvertible) { - apply(notation.asProvider().get().pluginId) -} - -fun DependencyHandler.implementation(provider: Provider) { - add("implementation", provider.get().group + ":" + provider.get().name + ":" + provider.get().version) -} - -fun DependencyHandler.testImplementation(provider: Provider) { - add("testImplementation", provider.get().group + ":" + provider.get().name + ":" + provider.get().version) -} - -fun DependencyHandler.ksp(provider: Provider) { - add("ksp", provider.get().group + ":" + provider.get().name + ":" + provider.get().version) -} - -internal fun Project.configureAndroidLibrary(commonExtension: LibraryExtension) { - commonExtension.apply { - compileSdk = libs.versions.compileSdk.get().toInt() - defaultConfig { - minSdk = libs.versions.minSdk.get().toInt() - } -// compileOptions { isCoreLibraryDesugaringEnabled = true } -// testOptions { -// unitTests { -// all { it.useJUnitPlatform() } -// isReturnDefaultValues = true -// isIncludeAndroidResources = true -// } -// } -// packaging { resources { excludes += listOf("META-INF/*") } } -// dependencies { -// IMPLEMENTATION(libs.findLibrary("androidx-core").get()) -// IMPLEMENTATION(libs.findLibrary("kotlinx-serialization-json").get()) -// IMPLEMENTATION(libs.findLibrary("other-timber").get()) -// IMPLEMENTATION(libs.findLibrary("google-hilt-android").get()) -// KSP(libs.findLibrary("google-hilt-compiler").get()) -// -// ANDROID_TEST_IMPLEMENTATION(libs.findBundle("androidTest").get()) -// ANDROID_TEST_IMPLEMENTATION(libs.findBundle("unitTest").get()) -// CORE_LIBRARY_DESUGARING(libs.findLibrary("other-desugaring").get()) -// TEST_IMPLEMENTATION(libs.findBundle("unitTest").get()) -// } +internal fun Project.setupAndroidApplication() { + with(pluginManager) { + alias(libs.plugins.android.application) } -} - -internal fun Project.configureAndroidApp(commonExtension: ApplicationExtension) { - commonExtension.apply { - namespace = "com.rtbishop.look4sat" + extensions.configure { + namespace = libs.versions.packageName.get() compileSdk = libs.versions.compileSdk.get().toInt() defaultConfig { - applicationId = "com.rtbishop.look4sat" + applicationId = libs.versions.packageName.get() minSdk = libs.versions.minSdk.get().toInt() versionCode = libs.versions.appVersionCode.get().toInt() versionName = libs.versions.appVersionName.get() @@ -126,84 +72,47 @@ internal fun Project.configureAndroidApp(commonExtension: ApplicationExtension) generateLocaleConfig = true localeFilters.addAll(listOf("en", "es", "ru", "si", "uk", "zh")) } - } -// extensions.configure { -// namespace = "com.rtbishop.look4sat" -// compileSdk = 36 -// defaultConfig { -// applicationId = "com.rtbishop.look4sat" -// minSdk = 24 -// versionCode = 410 -// versionName = "4.1.0" -// } -// buildFeatures { -// compose = true -// } -// buildTypes { -// debug { -// applicationIdSuffix = ".debug" -// } -// release { -// isMinifyEnabled = true -// isShrinkResources = true -// proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt")) -// } -// } -// androidResources { -// generateLocaleConfig = true -// localeFilters.addAll(listOf("en", "es", "ru", "si", "uk", "zh")) -// } -// } -} - -internal fun Project.configureComposeFeature(commonExtension: LibraryExtension) { - commonExtension.apply { - buildFeatures { compose = true } -// testOptions { animationsDisabled = true } - dependencies { -// IMPLEMENTATION(platform(libs.findLibrary("compose-bom").get())) -// IMPLEMENTATION(libs.findBundle("composeAll").get()) -// -// ANDROID_TEST_IMPLEMENTATION(libs.findBundle("composeDebug").get()) -// DEBUG_IMPLEMENTATION(libs.findBundle("composeDebug").get()) -// SCREENSHOT_TEST_IMPLEMENTATION(libs.findLibrary("compose-ui-tooling").get()) - } + packaging { resources { excludes += listOf("META-INF/*") } } } } -fun Project.setupAndroidModule(isApplication: Boolean) { +internal fun Project.setupCommonLibrary() { with(pluginManager) { - if (isApplication) { - alias(libs.plugins.android.application) - alias(libs.plugins.compose.compiler) - } else { - alias(libs.plugins.android.library) - alias(libs.plugins.google.ksp) - } + alias(libs.plugins.android.library) } - extensions.configure { + extensions.configure { compileSdk = libs.versions.compileSdk.get().toInt() - defaultConfig { - minSdk = 26 - versionCode = 1 - versionName = "1.0" - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 - } - buildTypes { - buildTypes { - maybeCreate("debug") - maybeCreate("release") - named("release") { - isMinifyEnabled = true - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" - ) - } - } - } + defaultConfig.minSdk = libs.versions.minSdk.get().toInt() + } +} + +internal fun Project.setupComposeFeature() { + with(pluginManager) { + alias(libs.plugins.compose.compiler) + } + extensions.configure { + buildFeatures.compose = true + } + dependencies { + IMPLEMENTATION(platform(libs.compose.bom)) + IMPLEMENTATION(libs.bundles.composeAll) + DEBUG_IMPLEMENTATION(libs.bundles.composeDebug) + } +} + +internal fun Project.setupKotlinToolchain() { + kotlinExtension.jvmToolchain(libs.versions.jdkVersion.get().toInt()) +} + +internal fun Project.setupAndroidTestDependencies() { + dependencies { + ANDROID_TEST_IMPLEMENTATION(libs.bundles.androidTest) + } +} + +internal fun Project.setupTestDependencies() { + dependencies { + TEST_IMPLEMENTATION(libs.test.coroutines) + TEST_IMPLEMENTATION(libs.test.junit4) } } diff --git a/build-logic/settings.gradle.kts b/build-logic/settings.gradle.kts index c275df7a..295505b9 100644 --- a/build-logic/settings.gradle.kts +++ b/build-logic/settings.gradle.kts @@ -1,5 +1,3 @@ -@file:Suppress("UnstableApiUsage") - dependencyResolutionManagement { repositories { google() @@ -13,4 +11,3 @@ dependencyResolutionManagement { } rootProject.name = "build-logic" include(":convention") -//enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") diff --git a/feature/map/build.gradle.kts b/feature/map/build.gradle.kts index 8bcf6455..597cd31b 100644 --- a/feature/map/build.gradle.kts +++ b/feature/map/build.gradle.kts @@ -5,3 +5,7 @@ plugins { android { namespace = "com.rtbishop.look4sat.feature.map" } + +dependencies { + implementation(libs.other.osmdroid) +} diff --git a/gradle.properties b/gradle.properties index 965d3071..6308f0e2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,4 @@ # Configure your build environment: http://www.gradle.org/docs/current/userguide/build_environment.html -android.disallowKotlinSourceSets=false org.gradle.caching=true org.gradle.jvmargs=-Xmx6g -XX:MaxMetaspaceSize=1g -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 org.gradle.parallel=true diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index c3302cd0..336cb2f6 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -9,17 +9,19 @@ compileSdk = "36" minSdk = "24" #noinspection UnusedVersionCatalogEntry jdkVersion = "17" +#noinspection UnusedVersionCatalogEntry +packageName = "com.rtbishop.look4sat" android-gradle-plugin = "9.0.1" google-ksp = "2.3.6" -kotlin = "2.3.10" +kotlin = "2.3.20" -androidx-core-ktx = "1.17.0" +androidx-core-ktx = "1.18.0" androidx-core-splashscreen = "1.2.0" androidx-room = "2.8.4" -compose-bom = "2026.02.01" -compose-activity = "1.12.4" +compose-bom = "2026.03.00" +compose-activity = "1.13.0" compose-lifecycle = "2.10.0" compose-navigation = "2.9.7" diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 707649f5..49d5bb61 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,7 @@ -#Fri Jan 30 17:28:14 GMT 2026 +#Fri Mar 13 09:30:16 GMT 2026 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.0-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/settings.gradle.kts b/settings.gradle.kts index bc2fb7c6..667e5214 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,4 +1,3 @@ -@file:Suppress("UnstableApiUsage") pluginManagement { includeBuild("build-logic") repositories { @@ -28,4 +27,3 @@ include( ":feature:satellites", ":feature:settings" ) -//enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")