diff --git a/.run/iosApp-cocoapods.run.xml b/.run/iosApp-cocoapods.run.xml index 8ce66786..a8eab207 100644 --- a/.run/iosApp-cocoapods.run.xml +++ b/.run/iosApp-cocoapods.run.xml @@ -1,5 +1,5 @@ - + diff --git a/.run/iosApp-mvvm-di-spm.run.xml b/.run/iosApp-mvvm-di-spm.run.xml index c449975c..764d689b 100644 --- a/.run/iosApp-mvvm-di-spm.run.xml +++ b/.run/iosApp-mvvm-di-spm.run.xml @@ -1,5 +1,5 @@ - + diff --git a/CHANGELOG.md b/CHANGELOG.md index 604a22a0..eeb0480f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## Unreleased + +### Dependencies + +- Bump Kotlin version from v1.8.0 to v1.9.21 ([#146](https://github.com/getsentry/sentry-kotlin-multiplatform/pull/146)) + ## 0.3.0 ### Features @@ -7,12 +13,6 @@ - Add sample & trace rate configuration ([#144](https://github.com/getsentry/sentry-kotlin-multiplatform/pull/144)) - Remove need for context in Sentry.init for Android ([#117](https://github.com/getsentry/sentry-kotlin-multiplatform/pull/117)) -### Dependencies - -- Bump Java SDK from v6.14.0 to v6.33.1 ([#139](https://github.com/getsentry/sentry-kotlin-multiplatform/pull/139)) - - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6331) - - [diff](https://github.com/getsentry/sentry-java/compare/6.14.0...6.33.1) - ## 0.2.1 ### Fixes diff --git a/Makefile b/Makefile index cad92b41..5e2de7be 100644 --- a/Makefile +++ b/Makefile @@ -39,11 +39,12 @@ buildProject: buildAppleSamples: ./gradlew build -p sentry-samples cd ./sentry-samples/kmp-app-cocoapods/iosApp/iosApp && touch iosApp.xcconfig - cd ./sentry-samples/kmp-app-mvvm-di/iosApp && touch iosApp.xcconfig + # cd ./sentry-samples/kmp-app-mvvm-di/iosApp && touch iosApp.xcconfig sudo xcode-select --switch /Applications/Xcode.app && /usr/bin/xcodebuild -version + ./gradlew ":sentry-samples:kmp-app-cocoapods:shared:podInstall" cd ./sentry-samples/kmp-app-cocoapods/iosApp; pod install xcodebuild -workspace ./sentry-samples/kmp-app-cocoapods/iosApp/iosApp.xcworkspace -scheme iosApp -configuration Debug -sdk iphonesimulator -arch arm64 - xcodebuild -project ./sentry-samples/kmp-app-mvvm-di/iosApp.xcodeproj -scheme iosApp -configuration Debug -sdk iphonesimulator -arch arm64 + # xcodebuild -project ./sentry-samples/kmp-app-mvvm-di/iosApp.xcodeproj -scheme iosApp -configuration Debug -sdk iphonesimulator -arch arm64 # Build all targets, run tests and checks api diff --git a/build.gradle.kts b/build.gradle.kts index 9dd2ac97..93d3f0d5 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -45,6 +45,11 @@ subprojects { } afterEvaluate { + val platformDists = project.tasks.filter { task -> + task.name.matches(Regex("(.*)DistZip")) + }.toTypedArray() + project.tasks.getByName("distZip").finalizedBy(*platformDists) + apply() configure { diff --git a/buildSrc/src/main/java/Config.kt b/buildSrc/src/main/java/Config.kt index 6f8be27a..62b6a9cd 100644 --- a/buildSrc/src/main/java/Config.kt +++ b/buildSrc/src/main/java/Config.kt @@ -1,7 +1,7 @@ object Config { val agpVersion = "7.4.2" - val kotlinVersion = "1.8.0" - val composeVersion = "1.3.1-rc01" + val kotlinVersion = "1.9.21" + val composeVersion = "1.5.11" val gradleMavenPublishPluginVersion = "0.18.0" val multiplatform = "multiplatform" @@ -38,6 +38,12 @@ object Config { val sentryCocoaVersion = "8.4.0" val sentryCocoa = "Sentry" + + object Samples { + val koinVersion = "3.5.2-RC1" + val koinCore = "io.insert-koin:koin-core:$koinVersion" + val koinAndroid = "io.insert-koin:koin-android:$koinVersion" + } } object TestLibs { @@ -48,10 +54,10 @@ object Config { val kotlinCoroutinesTest = "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.7.0-RC" val kotlinxSerializationJson = "org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.0" - val ktorClientCore = "io.ktor:ktor-client-core:2.3.0" - val ktorClientSerialization = "io.ktor:ktor-client-serialization:2.3.0" - val ktorClientOkHttp = "io.ktor:ktor-client-okhttp:2.3.0" - val ktorClientDarwin = "io.ktor:ktor-client-darwin:2.3.0" + val ktorClientCore = "io.ktor:ktor-client-core:2.3.6" + val ktorClientSerialization = "io.ktor:ktor-client-serialization:2.3.6" + 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" diff --git a/buildSrc/src/main/java/Publication.kt b/buildSrc/src/main/java/Publication.kt index 9167e432..2c94b3eb 100644 --- a/buildSrc/src/main/java/Publication.kt +++ b/buildSrc/src/main/java/Publication.kt @@ -173,12 +173,6 @@ fun DistributionContainer.configureForMultiplatform(project: Project) { } fromKlib(project.name, "tvosSimulatorArm64", version) } - - // make other distZip tasks run together with the main distZip - val platformDists = project.tasks.filter { task -> - task.name.matches(Consts.taskRegex) - }.toTypedArray() - project.tasks.getByName("distZip").finalizedBy(*platformDists) } private fun CopySpec.fromKlib(projectName: String, target: String, version: String) { diff --git a/gradle.properties b/gradle.properties index 7d3437b1..86a23332 100644 --- a/gradle.properties +++ b/gradle.properties @@ -14,13 +14,10 @@ jvm.version=1.8 versionName=0.3.0 # Increase memory for in-process compiler execution. -org.gradle.jvmargs=-Xmx3g +org.gradle.jvmargs=-Xmx6g # https://kotlinlang.org/docs/migrating-multiplatform-project-to-14.html#migrate-to-the-hierarchical-project-structure -kotlin.mpp.enableCompatibilityMetadataVariant=true kotlin.mpp.enableCInteropCommonization=true -kotlin.mpp.enableHierarchicalCommonization=true -kotlin.mpp.androidSourceSetLayoutVersion=2 # Publication pom properties POM_NAME=Sentry Kotlin Multiplatform SDK diff --git a/sentry-kotlin-multiplatform/api/android/sentry-kotlin-multiplatform.api b/sentry-kotlin-multiplatform/api/android/sentry-kotlin-multiplatform.api index 074d7115..89233344 100644 --- a/sentry-kotlin-multiplatform/api/android/sentry-kotlin-multiplatform.api +++ b/sentry-kotlin-multiplatform/api/android/sentry-kotlin-multiplatform.api @@ -150,6 +150,7 @@ public final class io/sentry/kotlin/multiplatform/SentryLevel : java/lang/Enum { public static final field FATAL Lio/sentry/kotlin/multiplatform/SentryLevel; public static final field INFO Lio/sentry/kotlin/multiplatform/SentryLevel; public static final field WARNING Lio/sentry/kotlin/multiplatform/SentryLevel; + public static fun getEntries ()Lkotlin/enums/EnumEntries; public static fun valueOf (Ljava/lang/String;)Lio/sentry/kotlin/multiplatform/SentryLevel; public static fun values ()[Lio/sentry/kotlin/multiplatform/SentryLevel; } diff --git a/sentry-kotlin-multiplatform/api/jvm/sentry-kotlin-multiplatform.api b/sentry-kotlin-multiplatform/api/jvm/sentry-kotlin-multiplatform.api index c79819de..e1f8a5cc 100644 --- a/sentry-kotlin-multiplatform/api/jvm/sentry-kotlin-multiplatform.api +++ b/sentry-kotlin-multiplatform/api/jvm/sentry-kotlin-multiplatform.api @@ -147,6 +147,7 @@ public final class io/sentry/kotlin/multiplatform/SentryLevel : java/lang/Enum { public static final field FATAL Lio/sentry/kotlin/multiplatform/SentryLevel; public static final field INFO Lio/sentry/kotlin/multiplatform/SentryLevel; public static final field WARNING Lio/sentry/kotlin/multiplatform/SentryLevel; + public static fun getEntries ()Lkotlin/enums/EnumEntries; public static fun valueOf (Ljava/lang/String;)Lio/sentry/kotlin/multiplatform/SentryLevel; public static fun values ()[Lio/sentry/kotlin/multiplatform/SentryLevel; } diff --git a/sentry-kotlin-multiplatform/build.gradle.kts b/sentry-kotlin-multiplatform/build.gradle.kts index 9167f82c..e939e81f 100644 --- a/sentry-kotlin-multiplatform/build.gradle.kts +++ b/sentry-kotlin-multiplatform/build.gradle.kts @@ -34,43 +34,53 @@ android { kotlin { explicitApi() + applyDefaultHierarchyTemplate() - android { + androidTarget { publishLibraryVariants("release") } jvm() - ios() + iosArm64() iosSimulatorArm64() - watchos() + iosX64() watchosSimulatorArm64() - tvos() + watchosArm32() + watchosArm64() + watchosX64() tvosSimulatorArm64() + tvosArm64() + tvosX64() macosX64() macosArm64() sourceSets { - val commonMain by getting { - dependencies { - implementation(Config.Libs.kotlinStd) + all { + languageSettings.apply { + optIn("kotlinx.cinterop.ExperimentalForeignApi") + optIn("kotlinx.cinterop.UnsafeNumber") + optIn("kotlin.experimental.ExperimentalNativeApi") } } - val commonTest by getting { - dependencies { - implementation(Config.TestLibs.kotlinCoroutinesCore) - implementation(Config.TestLibs.kotlinCoroutinesTest) - implementation(Config.TestLibs.ktorClientCore) - implementation(Config.TestLibs.ktorClientSerialization) - implementation(Config.TestLibs.kotlinxSerializationJson) - implementation(Config.TestLibs.kotlinCommon) - implementation(Config.TestLibs.kotlinCommonAnnotation) - } + + commonMain.dependencies { + implementation(Config.Libs.kotlinStd) } - val androidMain by getting { - dependencies { - implementation(Config.Libs.sentryAndroid) - } + commonTest.dependencies { + implementation(Config.TestLibs.kotlinCoroutinesCore) + implementation(Config.TestLibs.kotlinCoroutinesTest) + implementation(Config.TestLibs.ktorClientCore) + implementation(Config.TestLibs.ktorClientSerialization) + implementation(Config.TestLibs.kotlinxSerializationJson) + implementation(Config.TestLibs.kotlinCommon) + implementation(Config.TestLibs.kotlinCommonAnnotation) + } + + androidMain.dependencies { + implementation(Config.Libs.sentryAndroid) } + + // androidUnitTest.dependencies doesn't exist val androidUnitTest by getting { dependencies { implementation(Config.TestLibs.roboelectric) @@ -78,27 +88,40 @@ kotlin { implementation(Config.TestLibs.mockitoCore) } } - val jvmMain by getting - val jvmTest by getting val commonJvmMain by creating { - dependsOn(commonMain) - jvmMain.dependsOn(this) - androidMain.dependsOn(this) + dependsOn(commonMain.get()) dependencies { implementation(Config.Libs.sentryJava) } } + + androidMain.get().dependsOn(commonJvmMain) + jvmMain.get().dependsOn(commonJvmMain) + val commonJvmTest by creating { - dependsOn(commonTest) - jvmTest.dependsOn(this) - androidUnitTest.dependsOn(this) + dependsOn(commonTest.get()) dependencies { implementation(Config.TestLibs.kotlinJunit) implementation(Config.TestLibs.ktorClientOkHttp) } } + androidUnitTest.dependsOn(commonJvmTest) + jvmTest.get().dependsOn(commonJvmTest) + + appleTest.dependencies { + implementation(Config.TestLibs.ktorClientDarwin) + } + + val commonTvWatchMacOsMain by creating { + dependsOn(appleMain.get()) + } + + tvosMain.get().dependsOn(commonTvWatchMacOsMain) + macosMain.get().dependsOn(commonTvWatchMacOsMain) + watchosMain.get().dependsOn(commonTvWatchMacOsMain) + cocoapods { summary = "Official Sentry SDK Kotlin Multiplatform" homepage = "https://github.com/getsentry/sentry-kotlin-multiplatform" @@ -112,102 +135,42 @@ kotlin { watchos.deploymentTarget = Config.Cocoa.watchosDeploymentTarget } - val iosMain by getting - val iosSimulatorArm64Main by getting - val iosTest by getting - val iosSimulatorArm64Test by getting - - val commonIosMain by creating { - iosMain.dependsOn(this) - iosSimulatorArm64Main.dependsOn(this) - } - val commonIosTest by creating { - iosTest.dependsOn(this) - iosSimulatorArm64Test.dependsOn(this) - } - - val tvosMain by getting - val tvosSimulatorArm64Main by getting - val tvosTest by getting - val tvosSimulatorArm64Test by getting - - val watchosMain by getting - val watchosSimulatorArm64Main by getting - val watchosTest by getting - val watchosSimulatorArm64Test by getting - - val macosX64Main by getting - val macosArm64Main by getting - val macosX64Test by getting - val macosArm64Test by getting - - val commonTvWatchMacOsMain by creating { - tvosMain.dependsOn(this) - tvosSimulatorArm64Main.dependsOn(this) - watchosMain.dependsOn(this) - watchosSimulatorArm64Main.dependsOn(this) - macosArm64Main.dependsOn(this) - macosX64Main.dependsOn(this) - } - val commonTvWatchMacOsTest by creating { - tvosTest.dependsOn(this) - tvosSimulatorArm64Test.dependsOn(this) - watchosTest.dependsOn(this) - watchosSimulatorArm64Test.dependsOn(this) - macosX64Test.dependsOn(this) - macosArm64Test.dependsOn(this) - } - - val commonAppleMain by creating { - dependsOn(commonMain) - commonIosMain.dependsOn(this) - commonTvWatchMacOsMain.dependsOn(this) - } - val commonAppleTest by creating { - dependsOn(commonTest) - commonIosTest.dependsOn(this) - commonTvWatchMacOsTest.dependsOn(this) - dependencies { - implementation(Config.TestLibs.ktorClientDarwin) + listOf( + iosArm64(), + iosX64(), + iosSimulatorArm64(), + watchosArm32(), + watchosArm64(), + watchosX64(), + watchosSimulatorArm64(), + tvosArm64(), + tvosX64(), + tvosSimulatorArm64(), + macosX64(), + macosArm64() + ).forEach { + it.compilations.getByName("main") { + cinterops.create("Sentry.NSException") { + includeDirs("$projectDir/src/nativeInterop/cinterop/SentryNSException") + } + cinterops.create("Sentry.Scope") { + includeDirs("$projectDir/src/nativeInterop/cinterop/SentryScope") + } + cinterops.create("Sentry.PrivateSentrySDKOnly") { + includeDirs("$projectDir/src/nativeInterop/cinterop/SentryPrivateSentrySDKOnly") + } } } - } - listOf( - iosArm64(), - iosX64(), - iosSimulatorArm64(), - watchosArm32(), - watchosArm64(), - watchosX64(), - watchosSimulatorArm64(), - tvosArm64(), - tvosX64(), - tvosSimulatorArm64(), - macosX64(), - macosArm64() - ).forEach { - it.compilations.getByName("main") { - cinterops.create("Sentry.NSException") { - includeDirs("$projectDir/src/nativeInterop/cinterop/SentryNSException") - } - cinterops.create("Sentry.Scope") { - includeDirs("$projectDir/src/nativeInterop/cinterop/SentryScope") - } - cinterops.create("Sentry.PrivateSentrySDKOnly") { - includeDirs("$projectDir/src/nativeInterop/cinterop/SentryPrivateSentrySDKOnly") - } + // workaround for https://youtrack.jetbrains.com/issue/KT-41709 due to having "Meta" in the class name + // if we need to use this class, we'd need to find a better way to work it out + targets.withType().all { + compilations["main"].cinterops["Sentry"].extraOpts( + "-compiler-option", + "-DSentryMechanismMeta=SentryMechanismMetaUnavailable" + ) } } - - // workaround for https://youtrack.jetbrains.com/issue/KT-41709 due to having "Meta" in the class name - // if we need to use this class, we'd need to find a better way to work it out - targets.withType().all { - compilations["main"].cinterops["Sentry"].extraOpts( - "-compiler-option", - "-DSentryMechanismMeta=SentryMechanismMetaUnavailable" - ) - } } buildkonfig { diff --git a/sentry-kotlin-multiplatform/sentry_kotlin_multiplatform.podspec b/sentry-kotlin-multiplatform/sentry_kotlin_multiplatform.podspec index f4458eaa..cb68c988 100644 --- a/sentry-kotlin-multiplatform/sentry_kotlin_multiplatform.podspec +++ b/sentry-kotlin-multiplatform/sentry_kotlin_multiplatform.podspec @@ -14,6 +14,17 @@ Pod::Spec.new do |spec| spec.watchos.deployment_target = '4.0' spec.dependency 'Sentry', '8.4.0' + if !Dir.exist?('build/cocoapods/framework/sentry_kotlin_multiplatform.framework') || Dir.empty?('build/cocoapods/framework/sentry_kotlin_multiplatform.framework') + raise " + + Kotlin framework 'sentry_kotlin_multiplatform' doesn't exist yet, so a proper Xcode project can't be generated. + 'pod install' should be executed after running ':generateDummyFramework' Gradle task: + + ./gradlew :sentry-kotlin-multiplatform:generateDummyFramework + + Alternatively, proper pod installation is performed during Gradle sync in the IDE (if Podfile location is set)" + end + spec.pod_target_xcconfig = { 'KOTLIN_PROJECT_PATH' => ':sentry-kotlin-multiplatform', 'PRODUCT_MODULE_NAME' => 'sentry_kotlin_multiplatform', diff --git a/sentry-kotlin-multiplatform/src/androidMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryAndroidOptionsExtensions.kt b/sentry-kotlin-multiplatform/src/androidMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryAndroidOptionsExtensions.kt index cca0dd82..3837a666 100644 --- a/sentry-kotlin-multiplatform/src/androidMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryAndroidOptionsExtensions.kt +++ b/sentry-kotlin-multiplatform/src/androidMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryAndroidOptionsExtensions.kt @@ -3,6 +3,7 @@ package io.sentry.kotlin.multiplatform.extensions import io.sentry.android.core.SentryAndroidOptions import io.sentry.kotlin.multiplatform.BuildKonfig import io.sentry.kotlin.multiplatform.SentryOptions +import kotlin.collections.forEach as kForEach internal fun SentryOptions.toAndroidSentryOptionsCallback(): (SentryAndroidOptions) -> Unit = { // Apply base options available to all JVM targets @@ -15,7 +16,9 @@ internal fun SentryOptions.toAndroidSentryOptionsCallback(): (SentryAndroidOptio it.sdkVersion?.name = this.sdk?.name ?: BuildKonfig.SENTRY_KMP_ANDROID_SDK_NAME it.sdkVersion?.version = this.sdk?.version ?: BuildKonfig.VERSION_NAME - this.sdk?.packages?.forEach { sdkPackage -> + // kForEach solves an issue with linter where it thinks forEach is the Java version + // see here: https://stackoverflow.com/questions/44751469/kotlin-extension-functions-suddenly-require-api-level-24/68897591#68897591 + this.sdk?.packages?.kForEach { sdkPackage -> it.sdkVersion?.addPackage(sdkPackage.name, sdkPackage.version) } diff --git a/sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/Attachment.apple.kt b/sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/Attachment.apple.kt similarity index 100% rename from sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/Attachment.apple.kt rename to sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/Attachment.apple.kt diff --git a/sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/CocoaScopeProvider.kt b/sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/CocoaScopeProvider.kt similarity index 100% rename from sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/CocoaScopeProvider.kt rename to sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/CocoaScopeProvider.kt diff --git a/sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/SentryApple.kt b/sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/SentryApple.kt similarity index 100% rename from sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/SentryApple.kt rename to sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/SentryApple.kt diff --git a/sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/SentryBridge.apple.kt b/sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/SentryBridge.apple.kt similarity index 100% rename from sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/SentryBridge.apple.kt rename to sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/SentryBridge.apple.kt diff --git a/sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/SentryEvent.apple.kt b/sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/SentryEvent.apple.kt similarity index 100% rename from sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/SentryEvent.apple.kt rename to sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/SentryEvent.apple.kt diff --git a/sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/TypeAliases.apple.kt b/sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/TypeAliases.apple.kt similarity index 100% rename from sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/TypeAliases.apple.kt rename to sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/TypeAliases.apple.kt diff --git a/sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/BreadcrumbExtensions.apple.kt b/sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/BreadcrumbExtensions.apple.kt similarity index 94% rename from sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/BreadcrumbExtensions.apple.kt rename to sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/BreadcrumbExtensions.apple.kt index acb05ae5..385d2af4 100644 --- a/sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/BreadcrumbExtensions.apple.kt +++ b/sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/BreadcrumbExtensions.apple.kt @@ -21,5 +21,5 @@ internal fun CocoaBreadcrumb.toKmpBreadcrumb() = Breadcrumb().apply { map?.let { this.setData(it.toMutableMap()) } - level = scope.level?.toKmpSentryLevel() + level = scope.level.toKmpSentryLevel() } diff --git a/sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/FoundationExtensions.kt b/sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/FoundationExtensions.kt similarity index 100% rename from sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/FoundationExtensions.kt rename to sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/FoundationExtensions.kt diff --git a/sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/MessageExtensions.apple.kt b/sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/MessageExtensions.apple.kt similarity index 100% rename from sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/MessageExtensions.apple.kt rename to sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/MessageExtensions.apple.kt diff --git a/sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryEventExtensions.apple.kt b/sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryEventExtensions.apple.kt similarity index 100% rename from sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryEventExtensions.apple.kt rename to sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryEventExtensions.apple.kt diff --git a/sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryExceptionExtensions.apple.kt b/sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryExceptionExtensions.apple.kt similarity index 100% rename from sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryExceptionExtensions.apple.kt rename to sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryExceptionExtensions.apple.kt diff --git a/sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryLevelExtensions.apple.kt b/sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryLevelExtensions.apple.kt similarity index 100% rename from sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryLevelExtensions.apple.kt rename to sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryLevelExtensions.apple.kt diff --git a/sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryOptionsExtensions.apple.kt b/sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryOptionsExtensions.apple.kt similarity index 100% rename from sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryOptionsExtensions.apple.kt rename to sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryOptionsExtensions.apple.kt diff --git a/sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/UserExtensions.apple.kt b/sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/UserExtensions.apple.kt similarity index 100% rename from sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/UserExtensions.apple.kt rename to sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/UserExtensions.apple.kt diff --git a/sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/UserFeedbackExtensions.apple.kt b/sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/UserFeedbackExtensions.apple.kt similarity index 100% rename from sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/UserFeedbackExtensions.apple.kt rename to sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/UserFeedbackExtensions.apple.kt diff --git a/sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/nsexception/NSException.kt b/sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/nsexception/NSException.kt similarity index 100% rename from sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/nsexception/NSException.kt rename to sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/nsexception/NSException.kt diff --git a/sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/nsexception/SentryUnhandledExceptions.kt b/sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/nsexception/SentryUnhandledExceptions.kt similarity index 98% rename from sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/nsexception/SentryUnhandledExceptions.kt rename to sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/nsexception/SentryUnhandledExceptions.kt index 6fded3c5..29bf096f 100644 --- a/sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/nsexception/SentryUnhandledExceptions.kt +++ b/sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/nsexception/SentryUnhandledExceptions.kt @@ -34,7 +34,6 @@ import NSException.Sentry.kSentryLevelFatal import NSException.Sentry.prepareEvent import NSException.Sentry.storeEnvelope import NSException.Sentry.threadInspector -import kotlinx.cinterop.UnsafeNumber import platform.Foundation.NSException import platform.Foundation.NSNumber @@ -84,7 +83,6 @@ internal fun Throwable.asSentryEnvelope(): SentryEnvelope { * Converts `this` [Throwable] to a [SentryEvent]. */ @Suppress("UnnecessaryOptInAnnotation") -@OptIn(UnsafeNumber::class) private fun Throwable.asSentryEvent(): SentryEvent = SentryEvent(kSentryLevelFatal).apply { isCrashEvent = true @Suppress("UNCHECKED_CAST") diff --git a/sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/nsexception/Throwable.kt b/sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/nsexception/Throwable.kt similarity index 100% rename from sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/nsexception/Throwable.kt rename to sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/nsexception/Throwable.kt diff --git a/sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/nsexception/UnhandledExceptionHook.kt b/sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/nsexception/UnhandledExceptionHook.kt similarity index 94% rename from sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/nsexception/UnhandledExceptionHook.kt rename to sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/nsexception/UnhandledExceptionHook.kt index 538aed3b..4ffa78b7 100644 --- a/sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/nsexception/UnhandledExceptionHook.kt +++ b/sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/nsexception/UnhandledExceptionHook.kt @@ -14,7 +14,7 @@ package io.sentry.kotlin.multiplatform.nsexception -import kotlin.native.concurrent.AtomicReference +import kotlin.concurrent.AtomicReference import kotlin.native.concurrent.freeze /** @@ -24,7 +24,6 @@ import kotlin.native.concurrent.freeze * @see setUnhandledExceptionHook * @see terminateWithUnhandledException */ -@OptIn(ExperimentalStdlibApi::class) internal fun wrapUnhandledExceptionHook(hook: (Throwable) -> Unit) { val prevHook = AtomicReference(null) val wrappedHook: ReportUnhandledExceptionHook = { diff --git a/sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/protocol/SentryId.apple.kt b/sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/protocol/SentryId.apple.kt similarity index 100% rename from sentry-kotlin-multiplatform/src/commonAppleMain/kotlin/io/sentry/kotlin/multiplatform/protocol/SentryId.apple.kt rename to sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/protocol/SentryId.apple.kt diff --git a/sentry-kotlin-multiplatform/src/commonAppleTest/kotlin/io/sentry/kotlin/multiplatform/AppleSentryIdTest.kt b/sentry-kotlin-multiplatform/src/appleTest/kotlin/io/sentry/kotlin/multiplatform/AppleSentryIdTest.kt similarity index 100% rename from sentry-kotlin-multiplatform/src/commonAppleTest/kotlin/io/sentry/kotlin/multiplatform/AppleSentryIdTest.kt rename to sentry-kotlin-multiplatform/src/appleTest/kotlin/io/sentry/kotlin/multiplatform/AppleSentryIdTest.kt diff --git a/sentry-kotlin-multiplatform/src/commonAppleTest/kotlin/io/sentry/kotlin/multiplatform/BaseSentryScopeTest.kt b/sentry-kotlin-multiplatform/src/appleTest/kotlin/io/sentry/kotlin/multiplatform/BaseSentryScopeTest.kt similarity index 100% rename from sentry-kotlin-multiplatform/src/commonAppleTest/kotlin/io/sentry/kotlin/multiplatform/BaseSentryScopeTest.kt rename to sentry-kotlin-multiplatform/src/appleTest/kotlin/io/sentry/kotlin/multiplatform/BaseSentryScopeTest.kt diff --git a/sentry-kotlin-multiplatform/src/commonAppleTest/kotlin/io/sentry/kotlin/multiplatform/BaseSentryTest.kt b/sentry-kotlin-multiplatform/src/appleTest/kotlin/io/sentry/kotlin/multiplatform/BaseSentryTest.kt similarity index 100% rename from sentry-kotlin-multiplatform/src/commonAppleTest/kotlin/io/sentry/kotlin/multiplatform/BaseSentryTest.kt rename to sentry-kotlin-multiplatform/src/appleTest/kotlin/io/sentry/kotlin/multiplatform/BaseSentryTest.kt diff --git a/sentry-kotlin-multiplatform/src/commonAppleTest/kotlin/io/sentry/kotlin/multiplatform/BreadcrumbConfigurator.kt b/sentry-kotlin-multiplatform/src/appleTest/kotlin/io/sentry/kotlin/multiplatform/BreadcrumbConfigurator.kt similarity index 100% rename from sentry-kotlin-multiplatform/src/commonAppleTest/kotlin/io/sentry/kotlin/multiplatform/BreadcrumbConfigurator.kt rename to sentry-kotlin-multiplatform/src/appleTest/kotlin/io/sentry/kotlin/multiplatform/BreadcrumbConfigurator.kt diff --git a/sentry-kotlin-multiplatform/src/commonAppleTest/kotlin/io/sentry/kotlin/multiplatform/BreadcrumbTestConverter.kt b/sentry-kotlin-multiplatform/src/appleTest/kotlin/io/sentry/kotlin/multiplatform/BreadcrumbTestConverter.kt similarity index 100% rename from sentry-kotlin-multiplatform/src/commonAppleTest/kotlin/io/sentry/kotlin/multiplatform/BreadcrumbTestConverter.kt rename to sentry-kotlin-multiplatform/src/appleTest/kotlin/io/sentry/kotlin/multiplatform/BreadcrumbTestConverter.kt diff --git a/sentry-kotlin-multiplatform/src/commonAppleTest/kotlin/io/sentry/kotlin/multiplatform/FoundationTest.kt b/sentry-kotlin-multiplatform/src/appleTest/kotlin/io/sentry/kotlin/multiplatform/FoundationTest.kt similarity index 100% rename from sentry-kotlin-multiplatform/src/commonAppleTest/kotlin/io/sentry/kotlin/multiplatform/FoundationTest.kt rename to sentry-kotlin-multiplatform/src/appleTest/kotlin/io/sentry/kotlin/multiplatform/FoundationTest.kt diff --git a/sentry-kotlin-multiplatform/src/commonAppleTest/kotlin/io/sentry/kotlin/multiplatform/SentryEventConfigurator.kt b/sentry-kotlin-multiplatform/src/appleTest/kotlin/io/sentry/kotlin/multiplatform/SentryEventConfigurator.kt similarity index 100% rename from sentry-kotlin-multiplatform/src/commonAppleTest/kotlin/io/sentry/kotlin/multiplatform/SentryEventConfigurator.kt rename to sentry-kotlin-multiplatform/src/appleTest/kotlin/io/sentry/kotlin/multiplatform/SentryEventConfigurator.kt diff --git a/sentry-kotlin-multiplatform/src/commonAppleTest/kotlin/io/sentry/kotlin/multiplatform/SentryExceptionTest.kt b/sentry-kotlin-multiplatform/src/appleTest/kotlin/io/sentry/kotlin/multiplatform/SentryExceptionTest.kt similarity index 100% rename from sentry-kotlin-multiplatform/src/commonAppleTest/kotlin/io/sentry/kotlin/multiplatform/SentryExceptionTest.kt rename to sentry-kotlin-multiplatform/src/appleTest/kotlin/io/sentry/kotlin/multiplatform/SentryExceptionTest.kt diff --git a/sentry-kotlin-multiplatform/src/commonAppleTest/kotlin/io/sentry/kotlin/multiplatform/SentryLevelTestConverter.kt b/sentry-kotlin-multiplatform/src/appleTest/kotlin/io/sentry/kotlin/multiplatform/SentryLevelTestConverter.kt similarity index 100% rename from sentry-kotlin-multiplatform/src/commonAppleTest/kotlin/io/sentry/kotlin/multiplatform/SentryLevelTestConverter.kt rename to sentry-kotlin-multiplatform/src/appleTest/kotlin/io/sentry/kotlin/multiplatform/SentryLevelTestConverter.kt diff --git a/sentry-kotlin-multiplatform/src/commonAppleTest/kotlin/io/sentry/kotlin/multiplatform/nsexception/CommonAddressesTests.kt b/sentry-kotlin-multiplatform/src/appleTest/kotlin/io/sentry/kotlin/multiplatform/nsexception/CommonAddressesTests.kt similarity index 100% rename from sentry-kotlin-multiplatform/src/commonAppleTest/kotlin/io/sentry/kotlin/multiplatform/nsexception/CommonAddressesTests.kt rename to sentry-kotlin-multiplatform/src/appleTest/kotlin/io/sentry/kotlin/multiplatform/nsexception/CommonAddressesTests.kt diff --git a/sentry-kotlin-multiplatform/src/commonAppleTest/kotlin/io/sentry/kotlin/multiplatform/nsexception/InitAddressesTests.kt b/sentry-kotlin-multiplatform/src/appleTest/kotlin/io/sentry/kotlin/multiplatform/nsexception/InitAddressesTests.kt similarity index 100% rename from sentry-kotlin-multiplatform/src/commonAppleTest/kotlin/io/sentry/kotlin/multiplatform/nsexception/InitAddressesTests.kt rename to sentry-kotlin-multiplatform/src/appleTest/kotlin/io/sentry/kotlin/multiplatform/nsexception/InitAddressesTests.kt diff --git a/sentry-kotlin-multiplatform/src/commonAppleTest/kotlin/io/sentry/kotlin/multiplatform/nsexception/ThrowableCausesTests.kt b/sentry-kotlin-multiplatform/src/appleTest/kotlin/io/sentry/kotlin/multiplatform/nsexception/ThrowableCausesTests.kt similarity index 100% rename from sentry-kotlin-multiplatform/src/commonAppleTest/kotlin/io/sentry/kotlin/multiplatform/nsexception/ThrowableCausesTests.kt rename to sentry-kotlin-multiplatform/src/appleTest/kotlin/io/sentry/kotlin/multiplatform/nsexception/ThrowableCausesTests.kt diff --git a/sentry-kotlin-multiplatform/src/commonAppleTest/kotlin/io/sentry/kotlin/multiplatform/nsexception/ThrowableNameTests.kt b/sentry-kotlin-multiplatform/src/appleTest/kotlin/io/sentry/kotlin/multiplatform/nsexception/ThrowableNameTests.kt similarity index 100% rename from sentry-kotlin-multiplatform/src/commonAppleTest/kotlin/io/sentry/kotlin/multiplatform/nsexception/ThrowableNameTests.kt rename to sentry-kotlin-multiplatform/src/appleTest/kotlin/io/sentry/kotlin/multiplatform/nsexception/ThrowableNameTests.kt diff --git a/sentry-kotlin-multiplatform/src/commonAppleTest/kotlin/io/sentry/kotlin/multiplatform/nsexception/ThrowableReasonTests.kt b/sentry-kotlin-multiplatform/src/appleTest/kotlin/io/sentry/kotlin/multiplatform/nsexception/ThrowableReasonTests.kt similarity index 100% rename from sentry-kotlin-multiplatform/src/commonAppleTest/kotlin/io/sentry/kotlin/multiplatform/nsexception/ThrowableReasonTests.kt rename to sentry-kotlin-multiplatform/src/appleTest/kotlin/io/sentry/kotlin/multiplatform/nsexception/ThrowableReasonTests.kt diff --git a/sentry-kotlin-multiplatform/src/commonIosMain/kotlin/io/sentry/kotlin/multiplatform/SentryInit.ios.kt b/sentry-kotlin-multiplatform/src/iosMain/kotlin/io/sentry/kotlin/multiplatform/SentryInit.ios.kt similarity index 100% rename from sentry-kotlin-multiplatform/src/commonIosMain/kotlin/io/sentry/kotlin/multiplatform/SentryInit.ios.kt rename to sentry-kotlin-multiplatform/src/iosMain/kotlin/io/sentry/kotlin/multiplatform/SentryInit.ios.kt diff --git a/sentry-kotlin-multiplatform/src/commonIosMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryOptionsExtensions.ios.kt b/sentry-kotlin-multiplatform/src/iosMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryOptionsExtensions.ios.kt similarity index 100% rename from sentry-kotlin-multiplatform/src/commonIosMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryOptionsExtensions.ios.kt rename to sentry-kotlin-multiplatform/src/iosMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryOptionsExtensions.ios.kt diff --git a/sentry-samples/README.md b/sentry-samples/README.md index 8b3a547d..0cc9b428 100644 --- a/sentry-samples/README.md +++ b/sentry-samples/README.md @@ -4,7 +4,7 @@ This contains three samples of Kotlin Multiplatform projects showcasing the Sentry Kotlin Multiplatform SDK usage. - Sample 1: Android, iOS with Cocoapods, Desktop with Jetpack Compose - Sample 2: Android, iOS with Swift Package Manager, Desktop with Jetpack Compose -- Sample 3: Android with Jetpack Compose, iOS with Jetpack Compose, MVVM and Dependency Injection with [Koin](https://insert-koin.io/) +- Sample 3: Android with Jetpack Compose, iOS with SwiftUI and MVVM and Dependency Injection with [Koin](https://insert-koin.io/) ## Getting Started > All samples are configured as sub-projects. You need to open the root project in Android Studio and sync the gradle files. diff --git a/sentry-samples/kmp-app-cocoapods/shared/build.gradle.kts b/sentry-samples/kmp-app-cocoapods/shared/build.gradle.kts index 3f4394e1..71ace780 100644 --- a/sentry-samples/kmp-app-cocoapods/shared/build.gradle.kts +++ b/sentry-samples/kmp-app-cocoapods/shared/build.gradle.kts @@ -5,7 +5,9 @@ plugins { } kotlin { - android { + applyDefaultHierarchyTemplate() + + androidTarget { compilations.all { kotlinOptions { jvmTarget = "1.8" @@ -33,36 +35,12 @@ kotlin { } sourceSets { - val commonMain by getting { - dependencies { - api(project(":sentry-kotlin-multiplatform")) - } - } - val commonTest by getting { - dependencies { - implementation(kotlin("test")) - } - } - val jvmMain by getting - val androidMain by getting - val androidUnitTest by getting - val iosX64Main by getting - val iosArm64Main by getting - val iosSimulatorArm64Main by getting - val iosMain by creating { - dependsOn(commonMain) - iosX64Main.dependsOn(this) - iosArm64Main.dependsOn(this) - iosSimulatorArm64Main.dependsOn(this) + commonMain.dependencies { + api(project(":sentry-kotlin-multiplatform")) } - val iosX64Test by getting - val iosArm64Test by getting - val iosSimulatorArm64Test by getting - val iosTest by creating { - dependsOn(commonTest) - iosX64Test.dependsOn(this) - iosArm64Test.dependsOn(this) - iosSimulatorArm64Test.dependsOn(this) + + commonTest.dependencies { + implementation(kotlin("test")) } } } diff --git a/sentry-samples/kmp-app-cocoapods/shared/shared.podspec b/sentry-samples/kmp-app-cocoapods/shared/shared.podspec index 1fa7c843..98ad2c06 100644 --- a/sentry-samples/kmp-app-cocoapods/shared/shared.podspec +++ b/sentry-samples/kmp-app-cocoapods/shared/shared.podspec @@ -11,6 +11,17 @@ Pod::Spec.new do |spec| spec.ios.deployment_target = '14.1' spec.dependency 'Sentry', '~> 8.4.0' + if !Dir.exist?('build/cocoapods/framework/shared.framework') || Dir.empty?('build/cocoapods/framework/shared.framework') + raise " + + Kotlin framework 'shared' doesn't exist yet, so a proper Xcode project can't be generated. + 'pod install' should be executed after running ':generateDummyFramework' Gradle task: + + ./gradlew :sentry-samples:kmp-app-cocoapods:shared:generateDummyFramework + + Alternatively, proper pod installation is performed during Gradle sync in the IDE (if Podfile location is set)" + end + spec.pod_target_xcconfig = { 'KOTLIN_PROJECT_PATH' => ':sentry-samples:kmp-app-cocoapods:shared', 'PRODUCT_MODULE_NAME' => 'shared', diff --git a/sentry-samples/kmp-app-mvvm-di/androidApp/build.gradle.kts b/sentry-samples/kmp-app-mvvm-di/androidApp/build.gradle.kts index 7e62c3c7..ca12999d 100644 --- a/sentry-samples/kmp-app-mvvm-di/androidApp/build.gradle.kts +++ b/sentry-samples/kmp-app-mvvm-di/androidApp/build.gradle.kts @@ -6,11 +6,11 @@ plugins { android { namespace = "sentry.kmp.demo.android" - compileSdk = 33 + compileSdk = 34 defaultConfig { applicationId = "sentry.kmp.demo" minSdk = 21 - targetSdk = 33 + targetSdk = 34 versionCode = 1 versionName = "1.0" } @@ -39,29 +39,33 @@ android { } kotlinOptions { jvmTarget = JavaVersion.VERSION_1_8.toString() + freeCompilerArgs += listOf( + "-P", + "plugin:androidx.compose.compiler.plugins.kotlin:suppressKotlinVersionCompatibilityCheck=true" + ) } composeOptions { - kotlinCompilerExtensionVersion = "1.4.0-dev-k1.8.0-33c0ad36f83" + kotlinCompilerExtensionVersion = "1.5.5" } } dependencies { implementation(rootProject.project(":sentry-samples:kmp-app-mvvm-di:shared")) - implementation("androidx.core:core-ktx:1.10.0") - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4") + implementation(Config.Libs.Samples.koinAndroid) + implementation("androidx.core:core-ktx:1.12.0") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3") implementation("androidx.appcompat:appcompat:1.6.1") - implementation("com.google.android.material:material:1.8.0") - implementation("androidx.activity:activity-compose:1.7.0") - implementation("androidx.lifecycle:lifecycle-runtime:2.6.1") - implementation("androidx.lifecycle:lifecycle-viewmodel:2.6.1") - implementation("androidx.navigation:navigation-compose:2.5.3") - implementation("androidx.navigation:navigation-runtime:2.5.3") - implementation("io.insert-koin:koin-android:3.4.0") - implementation("androidx.compose.compiler:compiler:1.4.0-dev-k1.8.0-33c0ad36f83") - implementation("androidx.compose.ui:ui:1.5.0-alpha02") - implementation("androidx.compose.ui:ui-tooling:1.5.0-alpha02") - implementation("androidx.compose.foundation:foundation:1.5.0-alpha02") - implementation("androidx.compose.material:material:1.5.0-alpha02") + implementation("com.google.android.material:material:1.10.0") + implementation("androidx.activity:activity-compose:1.8.1") + implementation("androidx.lifecycle:lifecycle-runtime:2.6.2") + implementation("androidx.lifecycle:lifecycle-viewmodel:2.6.2") + implementation("androidx.navigation:navigation-compose:2.7.5") + implementation("androidx.navigation:navigation-runtime:2.7.5") + implementation("androidx.compose.compiler:compiler:1.5.5") + implementation("androidx.compose.ui:ui:1.6.0-beta02") + implementation("androidx.compose.ui:ui-tooling:1.6.0-beta02") + implementation("androidx.compose.foundation:foundation:1.6.0-beta02") + implementation("androidx.compose.material:material:1.6.0-beta02") } // Prevent Sentry from being included in the Android app through the AGP. diff --git a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/kotlin/sentry/kmp/demo/android/MainActivity.kt b/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/kotlin/sentry/kmp/demo/android/MainActivity.kt index d66aaab1..68ad571f 100644 --- a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/kotlin/sentry/kmp/demo/android/MainActivity.kt +++ b/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/kotlin/sentry/kmp/demo/android/MainActivity.kt @@ -11,7 +11,6 @@ import sentry.kmp.demo.models.AuthenticationViewModel import sentry.kmp.demo.models.HomeViewModel class MainActivity : ComponentActivity(), KoinComponent { - private val authenticationViewModel: AuthenticationViewModel by viewModel() private val homeViewModel: HomeViewModel by viewModel() diff --git a/sentry-samples/kmp-app-mvvm-di/shared/build.gradle.kts b/sentry-samples/kmp-app-mvvm-di/shared/build.gradle.kts index f906eba3..9d5f59fb 100644 --- a/sentry-samples/kmp-app-mvvm-di/shared/build.gradle.kts +++ b/sentry-samples/kmp-app-mvvm-di/shared/build.gradle.kts @@ -4,7 +4,9 @@ plugins { } kotlin { - android() + applyDefaultHierarchyTemplate() + + androidTarget() listOf( iosX64(), iosArm64(), @@ -18,40 +20,18 @@ kotlin { } sourceSets { - val commonMain by getting { - dependencies { - api(project(":sentry-kotlin-multiplatform")) - implementation("io.insert-koin:koin-core:3.4.0") - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4") - } - } - val commonTest by getting { - dependencies { - implementation(kotlin("test")) - } - } - val androidMain by getting { - dependencies { - implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1") - } + commonMain.dependencies { + api(project(":sentry-kotlin-multiplatform")) + implementation(Config.Libs.Samples.koinCore) + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3") } - val iosX64Main by getting - val iosArm64Main by getting - val iosSimulatorArm64Main by getting - val iosMain by creating { - dependsOn(commonMain) - iosX64Main.dependsOn(this) - iosArm64Main.dependsOn(this) - iosSimulatorArm64Main.dependsOn(this) + + commonTest.dependencies { + implementation(kotlin("test")) } - val iosX64Test by getting - val iosArm64Test by getting - val iosSimulatorArm64Test by getting - val iosTest by creating { - dependsOn(commonTest) - iosX64Test.dependsOn(this) - iosArm64Test.dependsOn(this) - iosSimulatorArm64Test.dependsOn(this) + + androidMain.dependencies { + implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2") } } } @@ -63,18 +43,3 @@ android { minSdk = Config.Android.minSdkVersion } } - -// Workaround for KotlinMetadata tasks failing when using ./gradlew build. -// However, running this sample on iOS and Android simulators remains unaffected. -afterEvaluate { - afterEvaluate { - tasks.configureEach { - if ( - name.startsWith("compile") && - name.endsWith("KotlinMetadata") - ) { - enabled = false - } - } - } -} diff --git a/sentry-samples/kmp-app-spm/shared/build.gradle.kts b/sentry-samples/kmp-app-spm/shared/build.gradle.kts index ccfd58e5..53b9aa00 100644 --- a/sentry-samples/kmp-app-spm/shared/build.gradle.kts +++ b/sentry-samples/kmp-app-spm/shared/build.gradle.kts @@ -4,7 +4,9 @@ plugins { } kotlin { - android() + applyDefaultHierarchyTemplate() + + androidTarget() jvm() listOf( iosX64(), @@ -19,35 +21,12 @@ kotlin { } sourceSets { - val commonMain by getting { - dependencies { - api(project(":sentry-kotlin-multiplatform")) - } - } - val commonTest by getting { - dependencies { - implementation(kotlin("test")) - } + commonMain.dependencies { + api(project(":sentry-kotlin-multiplatform")) } - val jvmMain by getting - val androidMain by getting - val iosX64Main by getting - val iosArm64Main by getting - val iosSimulatorArm64Main by getting - val iosMain by creating { - dependsOn(commonMain) - iosX64Main.dependsOn(this) - iosArm64Main.dependsOn(this) - iosSimulatorArm64Main.dependsOn(this) - } - val iosX64Test by getting - val iosArm64Test by getting - val iosSimulatorArm64Test by getting - val iosTest by creating { - dependsOn(commonTest) - iosX64Test.dependsOn(this) - iosArm64Test.dependsOn(this) - iosSimulatorArm64Test.dependsOn(this) + + commonTest.dependencies { + implementation(kotlin("test")) } } } diff --git a/settings.gradle.kts b/settings.gradle.kts index 68022c8e..3e294e97 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -23,28 +23,29 @@ include(":sentry-kotlin-multiplatform") /* Simple KMP App with targets: - - Android - - iOS with SwiftUI and SPM - - JVM Desktop with Jetpack Compose - */ + - Android + - iOS with SwiftUI and SPM + - JVM Desktop with Jetpack Compose +*/ include("sentry-samples:kmp-app-spm:shared") include("sentry-samples:kmp-app-spm:androidApp") include("sentry-samples:kmp-app-spm:desktopApp") /* Simple KMP App with targets: - - Android - - iOS with SwiftUI and Cocoapods - - JVM Desktop with Jetpack Compose - */ + - Android + - iOS with SwiftUI and Cocoapods + - JVM Desktop with Jetpack Compose +*/ include("sentry-samples:kmp-app-cocoapods:shared") include("sentry-samples:kmp-app-cocoapods:androidApp") include("sentry-samples:kmp-app-cocoapods:desktopApp") /* KMP App with MVVM and Dependency Injection with Koin: - - Android with Jetpack Compose - - iOS with SwiftUI and SPM - */ -include("sentry-samples:kmp-app-mvvm-di:shared") -include("sentry-samples:kmp-app-mvvm-di:androidApp") + - Android with Jetpack Compose + - iOS with SwiftUI and SPM +*/ +// This is currently disabled because Koin does not support Kotlin 1.9.21 yet +// include("sentry-samples:kmp-app-mvvm-di:shared") +// include("sentry-samples:kmp-app-mvvm-di:androidApp")