From cae92e1d1697e77978293f5a06fa04bd43fbbdd2 Mon Sep 17 00:00:00 2001 From: GIancarlo Buenaflor Date: Fri, 3 May 2024 14:44:21 +0200 Subject: [PATCH 1/3] Add fix --- .../kotlin/multiplatform/SentryInit.android.kt | 14 +++++++++++--- .../multiplatform/SentryContextProviderTest.kt | 5 +++-- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/sentry-kotlin-multiplatform/src/androidMain/kotlin/io/sentry/kotlin/multiplatform/SentryInit.android.kt b/sentry-kotlin-multiplatform/src/androidMain/kotlin/io/sentry/kotlin/multiplatform/SentryInit.android.kt index da017c2c..34567dd8 100644 --- a/sentry-kotlin-multiplatform/src/androidMain/kotlin/io/sentry/kotlin/multiplatform/SentryInit.android.kt +++ b/sentry-kotlin-multiplatform/src/androidMain/kotlin/io/sentry/kotlin/multiplatform/SentryInit.android.kt @@ -5,16 +5,24 @@ import android.content.ContentValues import android.content.Context import android.database.Cursor import android.net.Uri +import android.util.Log import io.sentry.android.core.SentryAndroid import io.sentry.kotlin.multiplatform.extensions.toAndroidSentryOptionsCallback internal actual fun initSentry(configuration: OptionsConfiguration) { val options = SentryOptions() configuration.invoke(options) - SentryAndroid.init(applicationContext, options.toAndroidSentryOptionsCallback()) -} -internal lateinit var applicationContext: Context + val context = applicationContext ?: run { + // TODO: add logging later + return + } + + SentryAndroid.init(context) { sentryOptions -> + options.toAndroidSentryOptionsCallback().invoke(sentryOptions) + }} + +internal var applicationContext: Context? = null private set public actual typealias Context = Context diff --git a/sentry-kotlin-multiplatform/src/androidUnitTest/kotlin/io/sentry/kotlin/multiplatform/SentryContextProviderTest.kt b/sentry-kotlin-multiplatform/src/androidUnitTest/kotlin/io/sentry/kotlin/multiplatform/SentryContextProviderTest.kt index 86f53329..066be349 100644 --- a/sentry-kotlin-multiplatform/src/androidUnitTest/kotlin/io/sentry/kotlin/multiplatform/SentryContextProviderTest.kt +++ b/sentry-kotlin-multiplatform/src/androidUnitTest/kotlin/io/sentry/kotlin/multiplatform/SentryContextProviderTest.kt @@ -7,6 +7,7 @@ import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mockito.mock +import kotlin.test.assertNotNull @RunWith(AndroidJUnit4::class) class SentryContextProviderTest : BaseSentryTest() { @@ -22,8 +23,8 @@ class SentryContextProviderTest : BaseSentryTest() { class SentryContextOnCreateTest : BaseSentryTest() { @Test fun `onCreate initializes applicationContext`() { - // Simple call to the lateinit applicationContext to make sure it's initialized - applicationContext + // Simple call to the applicationContext to make sure it's initialized + assertNotNull(applicationContext) } } From b065422a203d09e90511eda1118fa0c02d93034a Mon Sep 17 00:00:00 2001 From: GIancarlo Buenaflor Date: Fri, 3 May 2024 14:50:56 +0200 Subject: [PATCH 2/3] Update --- .../io/sentry/kotlin/multiplatform/SentryInit.android.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sentry-kotlin-multiplatform/src/androidMain/kotlin/io/sentry/kotlin/multiplatform/SentryInit.android.kt b/sentry-kotlin-multiplatform/src/androidMain/kotlin/io/sentry/kotlin/multiplatform/SentryInit.android.kt index 34567dd8..f895e3b5 100644 --- a/sentry-kotlin-multiplatform/src/androidMain/kotlin/io/sentry/kotlin/multiplatform/SentryInit.android.kt +++ b/sentry-kotlin-multiplatform/src/androidMain/kotlin/io/sentry/kotlin/multiplatform/SentryInit.android.kt @@ -5,7 +5,6 @@ import android.content.ContentValues import android.content.Context import android.database.Cursor import android.net.Uri -import android.util.Log import io.sentry.android.core.SentryAndroid import io.sentry.kotlin.multiplatform.extensions.toAndroidSentryOptionsCallback @@ -20,7 +19,8 @@ internal actual fun initSentry(configuration: OptionsConfiguration) { SentryAndroid.init(context) { sentryOptions -> options.toAndroidSentryOptionsCallback().invoke(sentryOptions) - }} + } +} internal var applicationContext: Context? = null private set From cb7d41da8c5d821d2260f6a16d37b4d346170554 Mon Sep 17 00:00:00 2001 From: GIancarlo Buenaflor Date: Fri, 3 May 2024 14:53:50 +0200 Subject: [PATCH 3/3] Update CHANGELOG --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 67af930a..c6e48d7f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,10 @@ pod("Sentry") { } ``` +### Fixes + +- Don't crash app when `applicationContext` is not available ([#217](https://github.com/getsentry/sentry-kotlin-multiplatform/pull/217)) + ### Enhancements - Make `setSentryUnhandledExceptionHook` public ([#208](https://github.com/getsentry/sentry-kotlin-multiplatform/pull/208))