diff --git a/CHANGELOG.md b/CHANGELOG.md index f0a00b6f1..3d4f390f8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## Unreleased + +Potentially breaking: this release bumps the used Kotlin version to `2.1.21`. + +### Dependencies + +- Bump Kotlin from `1.9.23` to `2.1.21` ([#389](https://github.com/getsentry/sentry-kotlin-multiplatform/pull/389/)) + +### Internal + +- Update `distZip` task to use the locally published artifacts via `publishToMavenLocal` ([#425](https://github.com/getsentry/sentry-kotlin-multiplatform/pull/425)) + ## 0.15.0 ### Enhancements diff --git a/build.gradle.kts b/build.gradle.kts index da79214fb..28338309a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -11,7 +11,8 @@ plugins { id(Config.dokka).version(Config.dokkaVersion) kotlin(Config.multiplatform).version(Config.kotlinVersion).apply(false) kotlin(Config.cocoapods).version(Config.kotlinVersion).apply(false) - id(Config.jetpackCompose).version(Config.composeVersion).apply(false) + id(Config.jetpackCompose).version(Config.composePluginVersion).apply(false) + id(Config.kotlinCompose).version(Config.kotlinVersion).apply(false) id(Config.androidGradle).version(Config.agpVersion).apply(false) id(Config.BuildPlugins.buildConfig).version(Config.BuildPlugins.buildConfigVersion).apply(false) kotlin(Config.kotlinSerializationPlugin).version(Config.kotlinVersion).apply(false) @@ -30,16 +31,19 @@ subprojects { apply() val sep = File.separator + // The path where we want publishToMavenLocal to output the artifacts to + val buildPublishDir = "${project.layout.buildDirectory.get().asFile.path}${sep}sentry-local-publish$sep" configure { - this.configureForMultiplatform(this@subprojects) + configureForMultiplatform(this@subprojects, buildPublishDir) } tasks.named("distZip").configure { - this.dependsOn("publishToMavenLocal") - this.doLast { + System.setProperty("maven.repo.local", buildPublishDir) + dependsOn("publishToMavenLocal") + doLast { val distributionFilePath = - "${this.project.buildDir}${sep}distributions${sep}${this.project.name}-${this.project.version}.zip" + "${project.layout.buildDirectory.get().asFile.path}${sep}distributions${sep}${project.name}-${project.version}.zip" val file = File(distributionFilePath) if (!file.exists()) throw GradleException("Distribution file: $distributionFilePath does not exist") if (file.length() == 0L) throw GradleException("Distribution file: $distributionFilePath is empty") diff --git a/buildSrc/src/main/java/Config.kt b/buildSrc/src/main/java/Config.kt index f250adfe1..68911bf24 100644 --- a/buildSrc/src/main/java/Config.kt +++ b/buildSrc/src/main/java/Config.kt @@ -1,12 +1,13 @@ object Config { val agpVersion = "7.4.2" - val kotlinVersion = "1.9.23" - val composeVersion = "1.6.1" + val kotlinVersion = "2.1.21" + val composePluginVersion = "1.8.0" val gradleMavenPublishPluginVersion = "0.18.0" val multiplatform = "multiplatform" val cocoapods = "native.cocoapods" val jetpackCompose = "org.jetbrains.compose" + val kotlinCompose = "org.jetbrains.kotlin.plugin.compose" val gradleMavenPublishPlugin = "com.vanniktech.maven.publish" val androidGradle = "com.android.library" val kotlinSerializationPlugin = "plugin.serialization" @@ -26,7 +27,7 @@ object Config { val detekt = "io.gitlab.arturbosch.detekt" val detektVersion = "1.22.0" val binaryCompatibility = "org.jetbrains.kotlinx.binary-compatibility-validator" - val binaryCompatibilityVersion = "0.13.1" + val binaryCompatibilityVersion = "0.18.0" } object Libs { @@ -59,9 +60,9 @@ object Config { val ktorClientOkHttp = "io.ktor:ktor-client-okhttp:2.3.6" val ktorClientDarwin = "io.ktor:ktor-client-darwin:2.3.6" - val roboelectric = "org.robolectric:robolectric:4.9" - val junitKtx = "androidx.test.ext:junit-ktx:1.1.5" - val mockitoCore = "org.mockito:mockito-core:5.4.0" + val roboelectric = "org.robolectric:robolectric:4.15.1" + val junitKtx = "androidx.test.ext:junit-ktx:1.2.1" + val mockitoCore = "org.mockito:mockito-core:5.18.0" } object Android { diff --git a/buildSrc/src/main/java/Publication.kt b/buildSrc/src/main/java/Publication.kt index 68fddaeb1..a983c0717 100644 --- a/buildSrc/src/main/java/Publication.kt +++ b/buildSrc/src/main/java/Publication.kt @@ -1,228 +1,47 @@ +import org.gradle.api.GradleException import org.gradle.api.Project import org.gradle.api.distribution.DistributionContainer -import org.gradle.api.file.CopySpec import java.io.File -val sep: String = File.separator +private val sep: String = File.separator -// configure distZip tasks for multiplatform -fun DistributionContainer.configureForMultiplatform(project: Project) { - val version = project.properties["versionName"].toString() - this.getByName("main").contents { - from("build${sep}publications${sep}kotlinMultiplatform") { - renameModule(project.name, version = version) - } - // The current Kotlin version doesn't generate this *-all.jar anymore. - // This is a placeholder for backwards compatibility with craft until we fix it there directly. - from("build${sep}libs") { - include("${project.name}-metadata-$version*") - rename { - it.replace("metadata-$version", "$version-all") - } - } - from("build${sep}kotlinToolingMetadata") { - rename { - it.replace( - "kotlin-tooling-metadata.json", - "${project.name}-$version-kotlin-tooling-metadata.json" - ) - } - } - from("build${sep}libs") { - include("${project.name}-kotlin*") - include("${project.name}-metadata*") - withJavadoc(project.name) - rename { - it.replace("multiplatform-kotlin", "multiplatform").replace("-metadata", "") - } - } - } - this.maybeCreate("android").contents { - from("build${sep}publications${sep}androidRelease") { - renameModule(project.name, "android", version) - } - from("build${sep}outputs${sep}aar${sep}${project.name}-release.aar") { - rename { - it.replace("-release", "-android-release") - } - } - from("build${sep}libs") { - include("*android*") - withJavadoc(project.name, "android") - } - } - this.maybeCreate("jvm").contents { - from("build${sep}publications${sep}jvm") { - renameModule(project.name, "jvm", version) - } - from("build${sep}libs$sep") { - include("*jvm*") - withJavadoc(project.name, "jvm") - } - } - this.maybeCreate("iosarm64").contents { - from("build${sep}publications${sep}iosArm64") { - renameModule(project.name, "iosarm64", version) - } - from("build${sep}libs$sep") { - include("${project.name}-iosarm64*") - withJavadoc(project.name, "iosarm64") - } - fromKlib(project.name, "iosArm64", version) - } - this.maybeCreate("iosx64").contents { - from("build${sep}publications${sep}iosX64") { - renameModule(project.name, "iosx64", version) - } - from("build${sep}libs$sep") { - include("${project.name}-iosx64*") - withJavadoc(project.name, "iosx64") - } - fromKlib(project.name, "iosX64", version) - } - this.maybeCreate("iossimulatorarm64").contents { - from("build${sep}publications${sep}iosSimulatorArm64") { - renameModule(project.name, "iossimulatorarm64", version) - } - from("build${sep}libs$sep") { - include("${project.name}-iossimulatorarm64*") - withJavadoc(project.name, "iossimulatorarm64") - } - fromKlib(project.name, "iosSimulatorArm64", version) - } - this.maybeCreate("macosarm64").contents { - from("build${sep}publications${sep}macosArm64") { - renameModule(project.name, "macosarm64", version) - } - from("build${sep}libs$sep") { - include("${project.name}-macosarm64*") - withJavadoc(project.name, "macosarm64") - } - fromKlib(project.name, "macosArm64", version) - } - this.maybeCreate("macosx64").contents { - from("build${sep}publications${sep}macosX64") { - renameModule(project.name, "macosx64", version) - } - from("build${sep}libs$sep") { - include("${project.name}-macosx64*") - withJavadoc(project.name, "macosx64") - } - fromKlib(project.name, "macosX64", version) - } - this.maybeCreate("watchosx64").contents { - from("build${sep}publications${sep}watchosX64") { - renameModule(project.name, "watchosx64", version) - } - from("build${sep}libs$sep") { - include("${project.name}-watchosx64*") - withJavadoc(project.name, "watchosx64") - } - fromKlib(project.name, "watchosX64", version) - } - this.maybeCreate("watchosarm32").contents { - from("build${sep}publications${sep}watchosArm32") { - renameModule(project.name, "watchosarm32", version) - } - from("build${sep}libs$sep") { - include("${project.name}-watchosarm32*") - withJavadoc(project.name, "watchosarm32") - } - fromKlib(project.name, "watchosArm32", version) - } - this.maybeCreate("watchosarm64").contents { - from("build${sep}publications${sep}watchosArm64") { - renameModule(project.name, "watchosarm64", version) - } - from("build${sep}libs$sep") { - include("${project.name}-watchosarm64*") - withJavadoc(project.name, "watchosarm64") - } - fromKlib(project.name, "watchosArm64", version) - } - this.maybeCreate("watchossimulatorarm64").contents { - from("build${sep}publications${sep}watchosSimulatorArm64") { - renameModule(project.name, "watchossimulatorarm64", version) - } - from("build${sep}libs$sep") { - include("${project.name}-watchossimulatorarm64*") - withJavadoc(project.name, "watchossimulatorarm64") - } - fromKlib(project.name, "watchosSimulatorArm64", version) - } - this.maybeCreate("tvosarm64").contents { - from("build${sep}publications${sep}tvosArm64") { - renameModule(project.name, "tvosarm64", version) - } - from("build${sep}libs$sep") { - include("${project.name}-tvosarm64*") - withJavadoc(project.name, "tvosarm64") - } - fromKlib(project.name, "tvosArm64", version) - } - this.maybeCreate("tvosx64").contents { - from("build${sep}publications${sep}tvosX64") { - renameModule(project.name, "tvosx64", version) - } - from("build${sep}libs$sep") { - include("${project.name}-tvosx64*") - withJavadoc(project.name, "tvosx64") - } - fromKlib(project.name, "tvosX64", version) - } - this.maybeCreate("tvossimulatorarm64").contents { - from("build${sep}publications${sep}tvosSimulatorArm64") { - renameModule(project.name, "tvossimulatorarm64", version) - } - from("build${sep}libs$sep") { - include("${project.name}-tvossimulatorarm64*") - withJavadoc(project.name, "tvossimulatorarm64") - } - fromKlib(project.name, "tvosSimulatorArm64", version) - } -} +fun DistributionContainer.configureForMultiplatform(project: Project, buildPublishDir: String) { + val version = project.property("versionName").toString() + if (version.isEmpty()) { + throw GradleException("DistZip: version name is empty") + } + val projectName = project.name + val platforms = mapOf( + "main" to projectName, + "android" to "$projectName-android", + "jvm" to "$projectName-jvm", + "iosarm64" to "$projectName-iosarm64", + "iossimulatorarm64" to "$projectName-iossimulatorarm64", + "iosx64" to "$projectName-iosx64", + "macosarm64" to "$projectName-macosarm64", + "macosx64" to "$projectName-macosx64", + "tvosarm64" to "$projectName-tvosarm64", + "tvossimulatorarm64" to "$projectName-tvossimulatorarm64", + "tvosx64" to "$projectName-tvosx64", + "watchosarm32" to "$projectName-watchosarm32", + "watchosarm64" to "$projectName-watchosarm64", + "watchossimulatorarm64" to "$projectName-watchossimulatorarm64", + "watchosx64" to "$projectName-watchosx64" + ) -private fun CopySpec.fromKlib(projectName: String, target: String, version: String) { - val pos = projectName.length - from("build${sep}classes${sep}kotlin${sep}${target}${sep}main${sep}cinterop") { - include("*.klib") - rename { - it.replaceRange(pos, pos, "-${target.lowercase()}-$version") - } - } - from("build${sep}classes${sep}kotlin${sep}${target}${sep}main${sep}klib") { - rename { - "$projectName-${target.lowercase()}-$version.klib" - } - } -} + platforms.forEach { (distName, projectName) -> + val distribution = maybeCreate(distName) + distribution.contents { + val basePath = "${buildPublishDir}io${sep}sentry${sep}$projectName$sep$version" -private fun CopySpec.renameModule(projectName: String, renameTo: String = "", version: String) { - var target = "" - if (renameTo.isNotEmpty()) { - target = "-$renameTo" - } - rename { - it.replace("module.json", "$projectName$target-$version.module") - } -} + // Rename the POM since craft looks for pom-default.xml + from("$basePath$sep$projectName-$version.pom") { + rename { "pom-default.xml" } + } -private fun CopySpec.withJavadoc(projectName: String, renameTo: String = "") { - include("*javadoc*") - rename { fileName -> - when { - "javadoc" in fileName -> { - val newName = buildString { - append(fileName.substring(0, projectName.length)) - if (renameTo.isNotEmpty()) { - append('-') - append(renameTo) - } - append(fileName.substring(projectName.length)) - } - newName + from(basePath) { + exclude("*.pom") } - else -> fileName } } } diff --git a/sentry-kotlin-multiplatform/api/android/sentry-kotlin-multiplatform.api b/sentry-kotlin-multiplatform/api/android/sentry-kotlin-multiplatform.api index cab31bff8..f32b7b42d 100644 --- a/sentry-kotlin-multiplatform/api/android/sentry-kotlin-multiplatform.api +++ b/sentry-kotlin-multiplatform/api/android/sentry-kotlin-multiplatform.api @@ -109,6 +109,7 @@ public abstract class io/sentry/kotlin/multiplatform/SentryBaseEvent { public fun getUser ()Lio/sentry/kotlin/multiplatform/protocol/User; public final fun removeTag (Ljava/lang/String;)V public fun setBreadcrumbs (Ljava/util/List;)V + public final fun setContexts (Ljava/util/Map;)V public fun setDist (Ljava/lang/String;)V public fun setEnvironment (Ljava/lang/String;)V public fun setEventId (Lio/sentry/kotlin/multiplatform/protocol/SentryId;)V diff --git a/sentry-kotlin-multiplatform/api/jvm/sentry-kotlin-multiplatform.api b/sentry-kotlin-multiplatform/api/jvm/sentry-kotlin-multiplatform.api index d122843d4..4d427e886 100644 --- a/sentry-kotlin-multiplatform/api/jvm/sentry-kotlin-multiplatform.api +++ b/sentry-kotlin-multiplatform/api/jvm/sentry-kotlin-multiplatform.api @@ -106,6 +106,7 @@ public abstract class io/sentry/kotlin/multiplatform/SentryBaseEvent { public fun getUser ()Lio/sentry/kotlin/multiplatform/protocol/User; public final fun removeTag (Ljava/lang/String;)V public fun setBreadcrumbs (Ljava/util/List;)V + public final fun setContexts (Ljava/util/Map;)V public fun setDist (Ljava/lang/String;)V public fun setEnvironment (Ljava/lang/String;)V public fun setEventId (Lio/sentry/kotlin/multiplatform/protocol/SentryId;)V diff --git a/sentry-kotlin-multiplatform/src/androidMain/kotlin/io/sentry/kotlin/multiplatform/SentryPlatformInstance.android.kt b/sentry-kotlin-multiplatform/src/androidMain/kotlin/io/sentry/kotlin/multiplatform/SentryPlatformInstance.android.kt index 926313324..0cd4779d5 100644 --- a/sentry-kotlin-multiplatform/src/androidMain/kotlin/io/sentry/kotlin/multiplatform/SentryPlatformInstance.android.kt +++ b/sentry-kotlin-multiplatform/src/androidMain/kotlin/io/sentry/kotlin/multiplatform/SentryPlatformInstance.android.kt @@ -3,7 +3,7 @@ package io.sentry.kotlin.multiplatform import io.sentry.android.core.SentryAndroid internal actual class SentryPlatformInstance : SentryInstance { - override fun init(configuration: PlatformOptionsConfiguration) { + actual override fun init(configuration: PlatformOptionsConfiguration) { val context = applicationContext ?: run { // TODO: add logging later return diff --git a/sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/nsexception/UnhandledExceptionHook.kt b/sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/nsexception/UnhandledExceptionHook.kt index 4ffa78b71..eb6d49e47 100644 --- a/sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/nsexception/UnhandledExceptionHook.kt +++ b/sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/nsexception/UnhandledExceptionHook.kt @@ -15,7 +15,6 @@ package io.sentry.kotlin.multiplatform.nsexception import kotlin.concurrent.AtomicReference -import kotlin.native.concurrent.freeze /** * Wraps the unhandled exception hook such that the provided [hook] is invoked @@ -31,5 +30,5 @@ internal fun wrapUnhandledExceptionHook(hook: (Throwable) -> Unit) { prevHook.value?.invoke(it) terminateWithUnhandledException(it) } - prevHook.value = setUnhandledExceptionHook(wrappedHook.freeze()) + prevHook.value = setUnhandledExceptionHook(wrappedHook) } diff --git a/sentry-kotlin-multiplatform/src/commonMain/kotlin/io/sentry/kotlin/multiplatform/SentryBaseEvent.kt b/sentry-kotlin-multiplatform/src/commonMain/kotlin/io/sentry/kotlin/multiplatform/SentryBaseEvent.kt index 10741a4b1..604df1c19 100644 --- a/sentry-kotlin-multiplatform/src/commonMain/kotlin/io/sentry/kotlin/multiplatform/SentryBaseEvent.kt +++ b/sentry-kotlin-multiplatform/src/commonMain/kotlin/io/sentry/kotlin/multiplatform/SentryBaseEvent.kt @@ -44,7 +44,6 @@ public abstract class SentryBaseEvent( * This is not thread-safe. */ public var contexts: Map = mapOf() - internal set /** * A mutable map of breadcrumbs that led to this event. diff --git a/sentry-kotlin-multiplatform/src/commonMain/kotlin/io/sentry/kotlin/multiplatform/SentryPlatformInstance.kt b/sentry-kotlin-multiplatform/src/commonMain/kotlin/io/sentry/kotlin/multiplatform/SentryPlatformInstance.kt index e32b9e5df..a0ac716bc 100644 --- a/sentry-kotlin-multiplatform/src/commonMain/kotlin/io/sentry/kotlin/multiplatform/SentryPlatformInstance.kt +++ b/sentry-kotlin-multiplatform/src/commonMain/kotlin/io/sentry/kotlin/multiplatform/SentryPlatformInstance.kt @@ -7,4 +7,6 @@ internal interface SentryInstance { /** * Represents the actual Sentry SDK instance. */ -internal expect class SentryPlatformInstance() : SentryInstance +internal expect class SentryPlatformInstance() : SentryInstance { + override fun init(configuration: PlatformOptionsConfiguration) +} diff --git a/sentry-kotlin-multiplatform/src/commonTest/kotlin/io/sentry/kotlin/multiplatform/SentryE2ETest.kt b/sentry-kotlin-multiplatform/src/commonTest/kotlin/io/sentry/kotlin/multiplatform/SentryE2ETest.kt index cdd3e6780..71061b375 100644 --- a/sentry-kotlin-multiplatform/src/commonTest/kotlin/io/sentry/kotlin/multiplatform/SentryE2ETest.kt +++ b/sentry-kotlin-multiplatform/src/commonTest/kotlin/io/sentry/kotlin/multiplatform/SentryE2ETest.kt @@ -46,7 +46,7 @@ class SentryE2ETest : BaseSentryTest() { @BeforeTest fun setup() { assertNotNull(authToken) - assertTrue(authToken.isNotEmpty()) + assertTrue(authToken!!.isNotEmpty()) sentryInit { options -> options.dsn = realDsn options.beforeSend = { event -> diff --git a/sentry-kotlin-multiplatform/src/commonTvWatchMacOsMain/kotlin/io/sentry/kotlin/multiplatform/SentryPlatformInstance.tvwatchmacos.kt b/sentry-kotlin-multiplatform/src/commonTvWatchMacOsMain/kotlin/io/sentry/kotlin/multiplatform/SentryPlatformInstance.tvwatchmacos.kt index 02532b89c..09a6780bb 100644 --- a/sentry-kotlin-multiplatform/src/commonTvWatchMacOsMain/kotlin/io/sentry/kotlin/multiplatform/SentryPlatformInstance.tvwatchmacos.kt +++ b/sentry-kotlin-multiplatform/src/commonTvWatchMacOsMain/kotlin/io/sentry/kotlin/multiplatform/SentryPlatformInstance.tvwatchmacos.kt @@ -3,7 +3,7 @@ package io.sentry.kotlin.multiplatform import cocoapods.Sentry.SentrySDK internal actual class SentryPlatformInstance : SentryInstance { - override fun init(configuration: PlatformOptionsConfiguration) { + actual override fun init(configuration: PlatformOptionsConfiguration) { val finalConfiguration: (CocoaSentryOptions?) -> Unit = { if (it != null) { configuration(it) diff --git a/sentry-kotlin-multiplatform/src/iosMain/kotlin/io/sentry/kotlin/multiplatform/SentryPlatformInstance.ios.kt b/sentry-kotlin-multiplatform/src/iosMain/kotlin/io/sentry/kotlin/multiplatform/SentryPlatformInstance.ios.kt index 02532b89c..09a6780bb 100644 --- a/sentry-kotlin-multiplatform/src/iosMain/kotlin/io/sentry/kotlin/multiplatform/SentryPlatformInstance.ios.kt +++ b/sentry-kotlin-multiplatform/src/iosMain/kotlin/io/sentry/kotlin/multiplatform/SentryPlatformInstance.ios.kt @@ -3,7 +3,7 @@ package io.sentry.kotlin.multiplatform import cocoapods.Sentry.SentrySDK internal actual class SentryPlatformInstance : SentryInstance { - override fun init(configuration: PlatformOptionsConfiguration) { + actual override fun init(configuration: PlatformOptionsConfiguration) { val finalConfiguration: (CocoaSentryOptions?) -> Unit = { if (it != null) { configuration(it) diff --git a/sentry-kotlin-multiplatform/src/jvmMain/kotlin/io/sentry/kotlin/multiplatform/SentryPlatformInstance.jvm.kt b/sentry-kotlin-multiplatform/src/jvmMain/kotlin/io/sentry/kotlin/multiplatform/SentryPlatformInstance.jvm.kt index 40a6a8c66..c5ebc23d6 100644 --- a/sentry-kotlin-multiplatform/src/jvmMain/kotlin/io/sentry/kotlin/multiplatform/SentryPlatformInstance.jvm.kt +++ b/sentry-kotlin-multiplatform/src/jvmMain/kotlin/io/sentry/kotlin/multiplatform/SentryPlatformInstance.jvm.kt @@ -3,7 +3,7 @@ package io.sentry.kotlin.multiplatform import io.sentry.Sentry as JvmSentry internal actual class SentryPlatformInstance : SentryInstance { - override fun init(configuration: PlatformOptionsConfiguration) { + actual override fun init(configuration: PlatformOptionsConfiguration) { JvmSentry.init(configuration) } } diff --git a/sentry-samples/kmp-app-cocoapods/androidApp/build.gradle.kts b/sentry-samples/kmp-app-cocoapods/androidApp/build.gradle.kts index 43d7c3617..b0dfb6066 100644 --- a/sentry-samples/kmp-app-cocoapods/androidApp/build.gradle.kts +++ b/sentry-samples/kmp-app-cocoapods/androidApp/build.gradle.kts @@ -1,4 +1,4 @@ -import org.jetbrains.kotlin.gradle.tasks.KotlinCompile +import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { id("com.android.application") @@ -7,6 +7,10 @@ plugins { } android { + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } compileSdk = Config.Android.compileSdkVersion defaultConfig { applicationId = "sample.kmp.app.android" @@ -34,12 +38,18 @@ android { } java { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + + toolchain { + languageVersion.set(JavaLanguageVersion.of(11)) + } } -tasks.withType { - kotlinOptions.jvmTarget = "1.8" +kotlin { + compilerOptions { + jvmTarget = JvmTarget.JVM_11 + } } dependencies { diff --git a/sentry-samples/kmp-app-cocoapods/desktopApp/build.gradle.kts b/sentry-samples/kmp-app-cocoapods/desktopApp/build.gradle.kts index dfb988983..519005fef 100644 --- a/sentry-samples/kmp-app-cocoapods/desktopApp/build.gradle.kts +++ b/sentry-samples/kmp-app-cocoapods/desktopApp/build.gradle.kts @@ -1,8 +1,9 @@ import org.jetbrains.compose.desktop.application.dsl.TargetFormat -import org.jetbrains.kotlin.gradle.tasks.KotlinCompile +import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { kotlin("multiplatform") + id("org.jetbrains.kotlin.plugin.compose") id("org.jetbrains.compose") } @@ -16,17 +17,16 @@ repositories { } java { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 -} - -tasks.withType { - kotlinOptions.jvmTarget = "1.8" + toolchain { + languageVersion.set(JavaLanguageVersion.of(11)) + } } kotlin { jvm { - withJava() + compilerOptions { + jvmTarget = JvmTarget.JVM_11 + } } sourceSets { val jvmMain by getting { diff --git a/sentry-samples/kmp-app-cocoapods/shared/build.gradle.kts b/sentry-samples/kmp-app-cocoapods/shared/build.gradle.kts index 24c265673..26e5883cd 100644 --- a/sentry-samples/kmp-app-cocoapods/shared/build.gradle.kts +++ b/sentry-samples/kmp-app-cocoapods/shared/build.gradle.kts @@ -1,4 +1,4 @@ -import org.jetbrains.kotlin.gradle.tasks.KotlinCompile +import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { kotlin("multiplatform") @@ -8,19 +8,20 @@ plugins { } java { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 -} - -tasks.withType { - kotlinOptions.jvmTarget = "1.8" + toolchain { + languageVersion.set(JavaLanguageVersion.of(11)) + } } kotlin { applyDefaultHierarchyTemplate() androidTarget() - jvm() + jvm { + compilerOptions { + jvmTarget = JvmTarget.JVM_11 + } + } iosX64() iosArm64() iosSimulatorArm64() @@ -59,6 +60,10 @@ kotlin { } android { + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } compileSdk = Config.Android.compileSdkVersion sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml") defaultConfig { diff --git a/sentry-samples/kmp-app-spm/androidApp/build.gradle.kts b/sentry-samples/kmp-app-spm/androidApp/build.gradle.kts index a5855180a..d6cd30825 100644 --- a/sentry-samples/kmp-app-spm/androidApp/build.gradle.kts +++ b/sentry-samples/kmp-app-spm/androidApp/build.gradle.kts @@ -1,4 +1,4 @@ -import org.jetbrains.kotlin.gradle.tasks.KotlinCompile +import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { id("com.android.application") @@ -7,15 +7,25 @@ plugins { } java { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + + toolchain { + languageVersion.set(JavaLanguageVersion.of(11)) + } } -tasks.withType { - kotlinOptions.jvmTarget = "1.8" +kotlin { + compilerOptions { + jvmTarget = JvmTarget.JVM_11 + } } android { + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } compileSdk = Config.Android.compileSdkVersion defaultConfig { applicationId = "sample.kmp.app.android" diff --git a/sentry-samples/kmp-app-spm/desktopApp/build.gradle.kts b/sentry-samples/kmp-app-spm/desktopApp/build.gradle.kts index dfb988983..519005fef 100644 --- a/sentry-samples/kmp-app-spm/desktopApp/build.gradle.kts +++ b/sentry-samples/kmp-app-spm/desktopApp/build.gradle.kts @@ -1,8 +1,9 @@ import org.jetbrains.compose.desktop.application.dsl.TargetFormat -import org.jetbrains.kotlin.gradle.tasks.KotlinCompile +import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { kotlin("multiplatform") + id("org.jetbrains.kotlin.plugin.compose") id("org.jetbrains.compose") } @@ -16,17 +17,16 @@ repositories { } java { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 -} - -tasks.withType { - kotlinOptions.jvmTarget = "1.8" + toolchain { + languageVersion.set(JavaLanguageVersion.of(11)) + } } kotlin { jvm { - withJava() + compilerOptions { + jvmTarget = JvmTarget.JVM_11 + } } sourceSets { val jvmMain by getting { diff --git a/sentry-samples/kmp-app-spm/shared/build.gradle.kts b/sentry-samples/kmp-app-spm/shared/build.gradle.kts index 44a3aaf58..54bb6031d 100644 --- a/sentry-samples/kmp-app-spm/shared/build.gradle.kts +++ b/sentry-samples/kmp-app-spm/shared/build.gradle.kts @@ -1,4 +1,4 @@ -import org.jetbrains.kotlin.gradle.tasks.KotlinCompile +import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { kotlin("multiplatform") @@ -7,19 +7,20 @@ plugins { } java { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 -} - -tasks.withType { - kotlinOptions.jvmTarget = "1.8" + toolchain { + languageVersion.set(JavaLanguageVersion.of(11)) + } } kotlin { applyDefaultHierarchyTemplate() androidTarget() - jvm() + jvm { + compilerOptions { + jvmTarget = JvmTarget.JVM_11 + } + } listOf( iosX64(), iosArm64(), @@ -44,6 +45,10 @@ kotlin { } android { + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } compileSdk = Config.Android.compileSdkVersion sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml") defaultConfig {