diff --git a/CHANGELOG.md b/CHANGELOG.md index 331ffe0490..ec6a04f83c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## Unreleased + +### Features + +- Added `io.sentry.ndk.sdk-name` Android manifest option to configure the native SDK's name ([#5027](https://github.com/getsentry/sentry-java/pull/5027)) + ## 8.30.0 ### 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 8cb301778b..7fed68da6d 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 @@ -37,6 +37,7 @@ final class ManifestMetadataReader { static final String AUTO_INIT = "io.sentry.auto-init"; static final String NDK_ENABLE = "io.sentry.ndk.enable"; static final String NDK_SCOPE_SYNC_ENABLE = "io.sentry.ndk.scope-sync.enable"; + static final String NDK_SDK_NAME = "io.sentry.ndk.sdk-name"; static final String RELEASE = "io.sentry.release"; static final String ENVIRONMENT = "io.sentry.environment"; static final String SDK_NAME = "io.sentry.sdk.name"; @@ -252,6 +253,12 @@ static void applyMetadata( options.setEnableScopeSync( readBool(metadata, logger, NDK_SCOPE_SYNC_ENABLE, options.isEnableScopeSync())); + final @Nullable String nativeSdkName = + readString(metadata, logger, NDK_SDK_NAME, options.getNativeSdkName()); + if (nativeSdkName != null) { + options.setNativeSdkName(nativeSdkName); + } + options.setRelease(readString(metadata, logger, RELEASE, options.getRelease())); options.setEnvironment(readString(metadata, logger, ENVIRONMENT, options.getEnvironment())); 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 c17334120b..1c4a4d3f33 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 @@ -646,6 +646,32 @@ class ManifestMetadataReaderTest { assertTrue(fixture.options.isEnableScopeSync) } + @Test + fun `applyMetadata reads nativeSdkName to options`() { + // Arrange + val expectedValue = "sentry.native.android.unity" + val bundle = bundleOf(ManifestMetadataReader.NDK_SDK_NAME to expectedValue) + val context = fixture.getContext(metaData = bundle) + + // Act + ManifestMetadataReader.applyMetadata(context, fixture.options, fixture.buildInfoProvider) + + // Assert + assertEquals(expectedValue, fixture.options.nativeSdkName) + } + + @Test + fun `applyMetadata reads nativeSdkName and keeps default`() { + // Arrange + val context = fixture.getContext() + + // Act + ManifestMetadataReader.applyMetadata(context, fixture.options, fixture.buildInfoProvider) + + // Assert + assertNull(fixture.options.nativeSdkName) + } + @Test fun `applyMetadata reads tracesSampleRate from metadata`() { // Arrange