diff --git a/CHANGELOG.md b/CHANGELOG.md index d1c5c83510..b94e9819f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ ### Features +- Read integration list written by sentry gradle plugin from manifest ([#2598](https://github.com/getsentry/sentry-java/pull/2598)) - Add Logcat adapter ([#2620](https://github.com/getsentry/sentry-java/pull/2620)) ### Fixes 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 df9077838e..5446da2fab 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 @@ -5,6 +5,7 @@ import android.content.pm.PackageManager; import android.os.Bundle; import io.sentry.ILogger; +import io.sentry.SentryIntegrationPackageStorage; import io.sentry.SentryLevel; import io.sentry.protocol.SdkVersion; import io.sentry.util.Objects; @@ -86,6 +87,8 @@ final class ManifestMetadataReader { static final String PERFORM_FRAMES_TRACKING = "io.sentry.traces.frames-tracking"; + static final String SENTRY_GRADLE_PLUGIN_INTEGRATIONS = "io.sentry.gradle-plugin-integrations"; + /** ManifestMetadataReader ctor */ private ManifestMetadataReader() {} @@ -320,6 +323,16 @@ static void applyMetadata( options.setSendDefaultPii( readBool(metadata, logger, SEND_DEFAULT_PII, options.isSendDefaultPii())); + + // sdkInfo.addIntegration(); + + List integrationsFromGradlePlugin = + readList(metadata, logger, SENTRY_GRADLE_PLUGIN_INTEGRATIONS); + if (integrationsFromGradlePlugin != null) { + for (String integration : integrationsFromGradlePlugin) { + SentryIntegrationPackageStorage.getInstance().addIntegration(integration); + } + } } options diff --git a/sentry-android-core/src/test/java/io/sentry/android/core/ManifestMetadataReaderTest.kt b/sentry-android-core/src/test/java/io/sentry/android/core/ManifestMetadataReaderTest.kt index e8c637b2a6..99fe287c2f 100644 --- a/sentry-android-core/src/test/java/io/sentry/android/core/ManifestMetadataReaderTest.kt +++ b/sentry-android-core/src/test/java/io/sentry/android/core/ManifestMetadataReaderTest.kt @@ -15,6 +15,7 @@ import org.mockito.kotlin.verify import kotlin.test.Test import kotlin.test.assertEquals import kotlin.test.assertFalse +import kotlin.test.assertNotNull import kotlin.test.assertNull import kotlin.test.assertTrue @@ -1202,4 +1203,19 @@ class ManifestMetadataReaderTest { // Assert assertFalse(fixture.options.isEnableTimeToFullDisplayTracing) } + + @Test + fun `applyMetadata reads enabled integrations to SDK Version`() { + // Arrange + val bundle = bundleOf(ManifestMetadataReader.SENTRY_GRADLE_PLUGIN_INTEGRATIONS to "Database Instrumentation,OkHttp Instrumentation") + val context = fixture.getContext(metaData = bundle) + + // Act + ManifestMetadataReader.applyMetadata(context, fixture.options, fixture.buildInfoProvider) + + // Assert + val resultingSet = fixture.options.sdkVersion?.integrationSet + assertNotNull(resultingSet) + assert(resultingSet.containsAll(listOf("Database Instrumentation", "OkHttp Instrumentation"))) + } }