diff --git a/app/build.gradle.kts b/app/build.gradle.kts index bbb8209..e1959fa 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,14 +1,11 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget - plugins { - alias(libs.plugins.android.application) + alias(libs.plugins.stream.android.application) alias(libs.plugins.kotlin.android) alias(libs.plugins.kotlin.compose) } kotlin { compilerOptions { - jvmTarget.set(JvmTarget.JVM_11) freeCompilerArgs.addAll( "-opt-in=io.getstream.android.core.annotations.StreamInternalApi", "-XXLanguage:+PropertyParamAnnotationDefaultTargetMode" @@ -18,12 +15,9 @@ kotlin { android { namespace = "io.getstream.android.core" - compileSdk = 36 defaultConfig { applicationId = "io.getstream.android.core.sample" - minSdk = 21 - targetSdk = 36 versionCode = 1 versionName = "1.0" @@ -39,13 +33,6 @@ android { ) } } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 - } - kotlinOptions { - jvmTarget = "11" - } buildFeatures { compose = true } @@ -73,4 +60,4 @@ dependencies { androidTestImplementation(libs.androidx.ui.test.junit4) debugImplementation(libs.androidx.ui.tooling) debugImplementation(libs.androidx.ui.test.manifest) -} \ No newline at end of file +} diff --git a/build.gradle.kts b/build.gradle.kts index 278bd2d..6ec1b11 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,3 +1,5 @@ +import com.android.build.api.dsl.ApplicationExtension +import com.android.build.api.dsl.LibraryExtension import java.io.FileNotFoundException import java.util.Calendar @@ -7,6 +9,9 @@ apply(plugin = "org.jetbrains.dokka") apply(from = "${rootDir}/gradle/scripts/sonar.gradle") // Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { + alias(libs.plugins.stream.android.library) apply false + alias(libs.plugins.stream.android.application) apply false + alias(libs.plugins.stream.java.library) apply false alias(libs.plugins.android.application) apply false alias(libs.plugins.kotlin.android) apply false alias(libs.plugins.jetbrains.kotlin.jvm) apply false @@ -38,6 +43,29 @@ detekt { buildUponDefaultConfig = true } +subprojects { + // Configure Android projects with common SDK versions as soon as either plugin is applied + pluginManager.withPlugin("com.android.library") { + extensions.configure { + defaultConfig { + compileSdk = libs.versions.compileSdk.get().toInt() + minSdk = libs.versions.minSdk.get().toInt() + lint.targetSdk = libs.versions.targetSdk.get().toInt() + testOptions.targetSdk = libs.versions.targetSdk.get().toInt() + } + } + } + pluginManager.withPlugin("com.android.application") { + extensions.configure { + defaultConfig { + compileSdk = libs.versions.compileSdk.get().toInt() + minSdk = libs.versions.minSdk.get().toInt() + targetSdk = libs.versions.targetSdk.get().toInt() + } + } + } +} + // License tasks subprojects { apply(from = "${rootDir}/gradle/scripts/coverage.gradle") @@ -76,4 +104,4 @@ subprojects { } } -apply(from = "${rootDir}/scripts/publish-root.gradle") \ No newline at end of file +apply(from = "${rootDir}/scripts/publish-root.gradle") diff --git a/buildSrc/src/main/kotlin/io/getstream/core/Configuration.kt b/buildSrc/src/main/kotlin/io/getstream/core/Configuration.kt index 8ff7822..388b87a 100644 --- a/buildSrc/src/main/kotlin/io/getstream/core/Configuration.kt +++ b/buildSrc/src/main/kotlin/io/getstream/core/Configuration.kt @@ -16,10 +16,6 @@ package io.getstream.core object Configuration { - const val compileSdk = 36 - const val targetSdk = 36 - const val sampleTargetSdk = 36 - const val minSdk = 21 const val majorVersion = 1 const val minorVersion = 0 const val patchVersion = 0 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 7dc10e6..da4a72b 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,4 +1,7 @@ [versions] +compileSdk = "36" +targetSdk = "36" +minSdk = "21" agp = "8.11.1" core = "1.7.0" kotlin = "2.2.0" @@ -23,6 +26,7 @@ ksp = "2.2.0-2.0.2" robolectric = "4.15.1" detekt = "1.23.8" spotless = "7.2.1" +streamConventions = "0.2.0" kover = "0.9.1" sonarqube = "6.0.1.5171" kotlinDokka = "1.9.20" @@ -76,8 +80,10 @@ kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "ko ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } arturbosch-detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" } spotless = { id = "com.diffplug.spotless", version.ref = "spotless" } +stream-android-library = { id = "io.getstream.android.library", version.ref = "streamConventions" } +stream-android-application = { id = "io.getstream.android.application", version.ref = "streamConventions" } +stream-java-library = { id = "io.getstream.java.library", version.ref = "streamConventions" } dokka = { id = "org.jetbrains.dokka", version.ref = "kotlinDokka" } nexus = { id = "io.github.gradle-nexus.publish-plugin", version.ref = "nexusPlugin" } kover = { id = "org.jetbrains.kotlinx.kover", version.ref = "kover"} sonarqube = { id = "org.sonarqube", version.ref = "sonarqube"} - diff --git a/settings.gradle.kts b/settings.gradle.kts index e498761..2b3471a 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,10 +1,9 @@ -import java.net.URI - include(":stream-android-core-annotations") pluginManagement { repositories { + mavenLocal() google { content { includeGroupByRegex("com\\.android.*") diff --git a/stream-android-core-annotations/build.gradle.kts b/stream-android-core-annotations/build.gradle.kts index e1d84f7..19744a1 100644 --- a/stream-android-core-annotations/build.gradle.kts +++ b/stream-android-core-annotations/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("java-library") + alias(libs.plugins.stream.java.library) alias(libs.plugins.jetbrains.kotlin.jvm) } @@ -12,12 +12,5 @@ rootProject.extra.apply { apply(from = "${rootDir}/scripts/publish-module.gradle") java { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 withSourcesJar() } -kotlin { - compilerOptions { - jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_11 - } -} diff --git a/stream-android-core/build.gradle.kts b/stream-android-core/build.gradle.kts index fa6e385..3e63be8 100644 --- a/stream-android-core/build.gradle.kts +++ b/stream-android-core/build.gradle.kts @@ -5,7 +5,7 @@ import io.getstream.core.Configuration import org.jetbrains.kotlin.gradle.dsl.abi.ExperimentalAbiValidation plugins { - alias(libs.plugins.android.library) + alias(libs.plugins.stream.android.library) alias(libs.plugins.kotlin.android) alias(libs.plugins.ksp) alias(libs.plugins.arturbosch.detekt) @@ -34,11 +34,8 @@ kotlin { android { namespace = "io.getstream.android.core" - compileSdk = Configuration.compileSdk defaultConfig { - minSdk = Configuration.minSdk - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles("consumer-rules.pro") } @@ -52,10 +49,6 @@ android { ) } } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 - } lint { abortOnError = true @@ -102,4 +95,4 @@ dependencies { testImplementation(libs.mockk) testImplementation(libs.kotlinx.coroutines.test) testImplementation(libs.mockwebserver) -} \ No newline at end of file +}