diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index fc91ffb52..518c1cfc3 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -10,6 +10,7 @@ repositories { dependencies { implementation(libs.kotlin.multiplatform.gradle) + implementation(libs.android.library) implementation(libs.android.gradle.plugin) implementation(libs.detekt.gradle) implementation(libs.dokka.gradle) diff --git a/buildSrc/src/main/kotlin/Android.kt b/buildSrc/src/main/kotlin/Android.kt index 4b9a6db6f..c1aa96c2f 100644 --- a/buildSrc/src/main/kotlin/Android.kt +++ b/buildSrc/src/main/kotlin/Android.kt @@ -1,20 +1,30 @@ -import com.android.build.gradle.LibraryExtension -import com.android.build.gradle.internal.dsl.BaseAppModuleExtension +import com.android.build.api.dsl.ApplicationExtension import org.gradle.api.JavaVersion import org.gradle.api.Project -import org.gradle.kotlin.dsl.configure import org.gradle.kotlin.dsl.extra -import org.gradle.kotlin.dsl.get +import org.jetbrains.kotlin.gradle.dsl.JvmTarget +import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension -fun Project.configureLibraryAndroidTarget( +fun KotlinMultiplatformExtension.configureLibraryAndroidTarget( namespace: String? = null, minSdk: Int = 23, - javaVersion: JavaVersion = JavaVersion.VERSION_1_8 + javaVersion: JvmTarget = JvmTarget.JVM_1_8 ) { - extensions.configure(LibraryExtension::class) { - compileSdk = 36 + android { + this.namespace = namespace ?: "${project.extra["base-group"].toString().replace("-", ".")}.${this@configureLibraryAndroidTarget.project.name.replace("-", "")}.library" + compileSdk = 37 + this.minSdk = minSdk + compilerOptions { + jvmTarget.set(javaVersion) + } + lint { + abortOnError = false + } + } + /*extensions.configure(LibraryExtension::class) { + compileSdk = 37 sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml") - this.namespace = namespace ?: "${extra["base-group"].toString().replace("-", ".")}.${this@configureLibraryAndroidTarget.name.replace("-", "")}.library" + this.namespace = defaultConfig { this.minSdk = minSdk } @@ -25,27 +35,30 @@ fun Project.configureLibraryAndroidTarget( sourceCompatibility = javaVersion targetCompatibility = javaVersion } - } + }*/ + } -fun BaseAppModuleExtension.configureApplicationAndroidTarget( +fun Project.configureApplicationAndroidTarget( javaVersion: JavaVersion = JavaVersion.VERSION_1_8 ) { - compileSdk = 36 - defaultConfig { - applicationId = "io.github.jan.supabase.android" - minSdk = 26 - versionCode = 1 - versionName = "1.0-SNAPSHOT" - } - namespace = "io.github.jan.supabase.android" - compileOptions { - sourceCompatibility = javaVersion - targetCompatibility = javaVersion - } - buildTypes { - getByName("release") { - isMinifyEnabled = false + (this as org.gradle.api.plugins.ExtensionAware).extensions.configure("android") { + compileSdk = 37 + defaultConfig { + applicationId = "io.github.jan.supabase.android" + minSdk = 26 + versionCode = 1 + versionName = "1.0-SNAPSHOT" + } + namespace = "io.github.jan.supabase.android" + compileOptions { + sourceCompatibility = javaVersion + targetCompatibility = javaVersion + } + buildTypes { + getByName("release") { + isMinifyEnabled = false + } } } } \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/KotlinTargets.kt b/buildSrc/src/main/kotlin/KotlinTargets.kt index 072e81028..bfdab6a4a 100644 --- a/buildSrc/src/main/kotlin/KotlinTargets.kt +++ b/buildSrc/src/main/kotlin/KotlinTargets.kt @@ -1,4 +1,5 @@ -import com.android.build.api.dsl.androidLibrary + +import com.android.build.api.dsl.KotlinMultiplatformAndroidLibraryTarget import org.gradle.kotlin.dsl.assign import org.gradle.kotlin.dsl.extra import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi @@ -44,18 +45,23 @@ fun KotlinMultiplatformExtension.configuredJvmTarget(jvmTarget: JvmTarget = JvmT fun KotlinMultiplatformExtension.configuredAndroidTarget( jvmTarget: JvmTarget = JvmTarget.JVM_1_8, ) { - androidLibrary { - compileSdk = 36 - minSdk = 23 + android { + compileSdk { version = release(37) } + minSdk { version = release(23) } this.namespace = namespace ?: "${project.extra["base-group"].toString().replace("-", ".")}.${project.name.replace("-", "")}.library" - compilations.configureEach { - compilerOptions.configure { - this.jvmTarget.set(jvmTarget) - } + compilerOptions { + this.jvmTarget.set(jvmTarget) } } } +// workaround because the method somehow does not exist in convention plugins +fun KotlinMultiplatformExtension.android(configure: KotlinMultiplatformAndroidLibraryTarget.() -> Unit) { + (extensions.getByName("android") as KotlinMultiplatformAndroidLibraryTarget).apply { + configure() + } +} + @OptIn(ExperimentalKotlinGradlePluginApi::class) fun KotlinMultiplatformExtension.jvmTargets(jvmTarget: JvmTarget = JvmTarget.JVM_1_8) { configuredAndroidTarget(jvmTarget) diff --git a/gradle.properties b/gradle.properties index 20a82b759..ee3a49a19 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,10 +1,10 @@ kotlin.code.style=official android.useAndroidX=true org.gradle.jvmargs=-Xmx4096m -kotlin.mpp.androidSourceSetLayoutVersion=2 kotlin.native.ignoreDisabledTargets=true org.gradle.parallel=true kotlin.suppressGradlePluginWarnings=IncorrectCompileOnlyDependencyWarning +android.enableLegacyVariantApi=true org.jetbrains.compose.experimental.uikit.enabled=true org.jetbrains.compose.experimental.jscanvas.enabled=true diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index dc0a093d8..46b761921 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -11,7 +11,7 @@ androidx-startup = "1.2.0" androidx-activity-compose = "1.13.0" multiplatform-settings = "1.3.0" complete-kotlin = "1.1.0" -agp = "8.11.1" +agp = "9.2.1" maven-publish = "0.36.0" apollo-kotlin = "5.0.0" serialization = "1.11.0" @@ -24,7 +24,7 @@ compose = "1.11.1" coil2 = "2.7.0" okio = "3.17.0" koin = "4.2.2" -androidx-core = "1.18.0" +androidx-core = "1.19.0" androidx-compat = "1.7.1" androidx-lifecycle = "2.10.0" filekit = "0.8.8" @@ -67,6 +67,7 @@ detekt-gradle = { module = "io.gitlab.arturbosch.detekt:detekt-gradle-plugin", v dokka-gradle = { module = "org.jetbrains.dokka:dokka-gradle-plugin", version.ref = "dokka" } publishing-gradle = { module = "com.vanniktech:gradle-maven-publish-plugin", version.ref = "maven-publish" } compose-gradle = { module = "org.jetbrains.compose:compose-gradle-plugin", version.ref = "compose" } +android-library = { module = "com.android.kotlin.multiplatform.library:com.android.kotlin.multiplatform.library.gradle.plugin", version.ref = "agp"} ktor-client-core = { module = "io.ktor:ktor-client-core", version.ref = "ktor" } ktor-client-cio = { module = "io.ktor:ktor-client-cio", version.ref = "ktor" } diff --git a/sample/chat-demo-mpp/android/build.gradle.kts b/sample/chat-demo-mpp/android/build.gradle.kts index 3dceb60e3..f3c539957 100644 --- a/sample/chat-demo-mpp/android/build.gradle.kts +++ b/sample/chat-demo-mpp/android/build.gradle.kts @@ -4,7 +4,6 @@ plugins { id(libs.plugins.compose.plugin.get().pluginId) alias(libs.plugins.compose.compiler) id("com.android.application") - id(libs.plugins.kotlin.android.get().pluginId) alias(libs.plugins.kotlinx.plugin.serialization) } @@ -16,9 +15,7 @@ dependencies { implementation(libs.androidx.activity.compose) } -android { - configureApplicationAndroidTarget(JavaVersion.VERSION_11) -} +configureApplicationAndroidTarget(JavaVersion.VERSION_11) kotlin { compilerOptions { diff --git a/sample/chat-demo-mpp/common/build.gradle.kts b/sample/chat-demo-mpp/common/build.gradle.kts index c818f8422..7f5cdd438 100644 --- a/sample/chat-demo-mpp/common/build.gradle.kts +++ b/sample/chat-demo-mpp/common/build.gradle.kts @@ -8,7 +8,7 @@ plugins { id(libs.plugins.kotlin.multiplatform.get().pluginId) id(libs.plugins.compose.plugin.get().pluginId) alias(libs.plugins.compose.compiler) - id(libs.plugins.android.library.get().pluginId) + id(libs.plugins.android.kotlin.multiplatform.library.get().pluginId) alias(libs.plugins.kotlinx.plugin.serialization) } @@ -26,7 +26,7 @@ kotlin { } } compilerOptions.freeCompilerArgs.add("-Xexpect-actual-classes") - androidTarget() + configureLibraryAndroidTarget("io.github.jan.supabase.common", 26, JvmTarget.JVM_11) jvmToolchain(11) jvm("desktop") { compilerOptions { @@ -90,4 +90,4 @@ kotlin { } } -configureLibraryAndroidTarget("io.github.jan.supabase.common", 26, JavaVersion.VERSION_11) +//configureLibraryAndroidTarget("io.github.jan.supabase.common", 26, JavaVersion.VERSION_11) diff --git a/sample/file-upload/android/build.gradle.kts b/sample/file-upload/android/build.gradle.kts index 94f9dca2f..6aeebfc0f 100644 --- a/sample/file-upload/android/build.gradle.kts +++ b/sample/file-upload/android/build.gradle.kts @@ -4,7 +4,6 @@ plugins { id(libs.plugins.compose.plugin.get().pluginId) alias(libs.plugins.compose.compiler) id("com.android.application") - id(libs.plugins.kotlin.android.get().pluginId) alias(libs.plugins.kotlinx.plugin.serialization) } @@ -17,9 +16,7 @@ dependencies { implementation(libs.accompanist.permissions) } -android { - configureApplicationAndroidTarget(JavaVersion.VERSION_11) -} +configureApplicationAndroidTarget(JavaVersion.VERSION_11) kotlin { compilerOptions { diff --git a/sample/file-upload/common/build.gradle.kts b/sample/file-upload/common/build.gradle.kts index 07e768f08..5b5c4a3cc 100644 --- a/sample/file-upload/common/build.gradle.kts +++ b/sample/file-upload/common/build.gradle.kts @@ -9,7 +9,7 @@ plugins { id(libs.plugins.kotlin.multiplatform.get().pluginId) id(libs.plugins.compose.plugin.get().pluginId) alias(libs.plugins.compose.compiler) - id(libs.plugins.android.library.get().pluginId) + id(libs.plugins.android.kotlin.multiplatform.library.get().pluginId) alias(libs.plugins.kotlinx.plugin.serialization) } @@ -22,7 +22,7 @@ repositories { kotlin { jvmToolchain(11) - androidTarget() + configureLibraryAndroidTarget("io.github.jan.supabase.common", 26, JvmTarget.JVM_11) jvm("desktop") { compilerOptions { jvmTarget = JvmTarget.JVM_11 @@ -71,5 +71,3 @@ kotlin { } } } - -configureLibraryAndroidTarget("io.github.jan.supabase.common", 26, JavaVersion.VERSION_11) \ No newline at end of file diff --git a/sample/multi-factor-auth/android/build.gradle.kts b/sample/multi-factor-auth/android/build.gradle.kts index 8865be115..80ba61ddb 100644 --- a/sample/multi-factor-auth/android/build.gradle.kts +++ b/sample/multi-factor-auth/android/build.gradle.kts @@ -4,7 +4,6 @@ plugins { id(libs.plugins.compose.plugin.get().pluginId) alias(libs.plugins.compose.compiler) id("com.android.application") - id(libs.plugins.kotlin.android.get().pluginId) alias(libs.plugins.kotlinx.plugin.serialization) } @@ -16,9 +15,7 @@ dependencies { implementation(project(":sample:multi-factor-auth:common")) } -android { - configureApplicationAndroidTarget(JavaVersion.VERSION_11) -} +configureApplicationAndroidTarget(JavaVersion.VERSION_11) kotlin { compilerOptions { diff --git a/sample/multi-factor-auth/common/build.gradle.kts b/sample/multi-factor-auth/common/build.gradle.kts index b0dd1bb5f..e0057ed71 100644 --- a/sample/multi-factor-auth/common/build.gradle.kts +++ b/sample/multi-factor-auth/common/build.gradle.kts @@ -3,7 +3,7 @@ import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { - id(libs.plugins.android.library.get().pluginId) + id(libs.plugins.android.kotlin.multiplatform.library.get().pluginId) id(libs.plugins.compose.plugin.get().pluginId) alias(libs.plugins.compose.compiler) id(libs.plugins.kotlin.multiplatform.get().pluginId) @@ -16,7 +16,7 @@ version = "1.0-SNAPSHOT" @OptIn(ExperimentalKotlinGradlePluginApi::class) kotlin { jvmToolchain(11) - androidTarget() + configureLibraryAndroidTarget("io.github.jan.supabase.common", 26, JvmTarget.JVM_11) jvm("desktop") { compilerOptions { jvmTarget = JvmTarget.JVM_11 @@ -75,4 +75,3 @@ kotlin { } } -configureLibraryAndroidTarget("io.github.jan.supabase.common", 26, JavaVersion.VERSION_11) \ No newline at end of file