diff --git a/sentry-android-core/src/main/java/io/sentry/android/core/ManifestMetadataReader.java b/sentry-android-core/src/main/java/io/sentry/android/core/ManifestMetadataReader.java index 29f325de7..c7f50cf36 100644 --- a/sentry-android-core/src/main/java/io/sentry/android/core/ManifestMetadataReader.java +++ b/sentry-android-core/src/main/java/io/sentry/android/core/ManifestMetadataReader.java @@ -55,10 +55,15 @@ static void applyMetadata(Context context, SentryAndroidOptions options) { options.setAnrTimeoutIntervalMills(anrTimeoutIntervalMills); String dsn = metadata.getString(DSN_KEY, null); - if (dsn != null) { + if (dsn == null) { + logIfNotNull(options.getLogger(), SentryLevel.FATAL, "DSN is required. Use empty string to disable SDK."); + } else if (dsn.isEmpty()) { + logIfNotNull( + options.getLogger(), SentryLevel.DEBUG, "DSN is empty, disabling sentry-android"); + } else { logIfNotNull(options.getLogger(), SentryLevel.DEBUG, "DSN read: %s", dsn); - options.setDsn(dsn); } + options.setDsn(dsn); boolean ndk = metadata.getBoolean(ENABLE_NDK, options.isEnableNdk()); logIfNotNull(options.getLogger(), SentryLevel.DEBUG, "NDK read: %s", ndk); diff --git a/sentry-android-core/src/test/java/io/sentry/android/core/SentryInitProviderTest.kt b/sentry-android-core/src/test/java/io/sentry/android/core/SentryInitProviderTest.kt index 86b53e314..678d9f0a0 100644 --- a/sentry-android-core/src/test/java/io/sentry/android/core/SentryInitProviderTest.kt +++ b/sentry-android-core/src/test/java/io/sentry/android/core/SentryInitProviderTest.kt @@ -80,7 +80,7 @@ class SentryInitProviderTest { } @Test - fun `when applicationId is defined, dsn in meta-data is not set or null, SDK doesnt initialize`() { + fun `when applicationId is defined, dsn in meta-data is not set or null, SDK throws exception`() { val providerInfo = ProviderInfo() assertFalse(Sentry.isEnabled()) @@ -92,9 +92,7 @@ class SentryInitProviderTest { metaData.putString(ManifestMetadataReader.DSN_KEY, null) - sentryInitProvider.attachInfo(mockContext, providerInfo) - - assertFalse(Sentry.isEnabled()) + assertFailsWith { sentryInitProvider.attachInfo(mockContext, providerInfo) } } @Test diff --git a/sentry-core/src/main/java/io/sentry/core/Sentry.java b/sentry-core/src/main/java/io/sentry/core/Sentry.java index 3eca18014..19a12d002 100644 --- a/sentry-core/src/main/java/io/sentry/core/Sentry.java +++ b/sentry-core/src/main/java/io/sentry/core/Sentry.java @@ -50,7 +50,9 @@ public static void init(@NotNull OptionsConfiguration optionsConf private static synchronized void init(@NotNull T options) { String dsn = options.getDsn(); - if (dsn == null || dsn.isEmpty()) { + if (dsn == null) { + throw new IllegalArgumentException("DSN is required. Use empty string to disable SDK."); + } else if (dsn.isEmpty()) { close(); return; }