Skip to content

Commit 6a11214

Browse files
authored
Add API to set custom sentry-native sdk name (#2704)
1 parent 70ef023 commit 6a11214

File tree

6 files changed

+61
-1
lines changed

6 files changed

+61
-1
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@
2929
- Bump Gradle from v8.1.0 to v8.1.1 ([#2666](https://github.com/getsentry/sentry-java/pull/2666))
3030
- [changelog](https://github.com/gradle/gradle/blob/master release-test/CHANGELOG.md#v811)
3131
- [diff](https://github.com/gradle/gradle/compare/v8.1.0...v8.1.1)
32+
- Bump Native SDK from v0.6.1 to v0.6.2 ([#2689](https://github.com/getsentry/sentry-java/pull/2689))
33+
- [changelog](https://github.com/getsentry/sentry-native/blob/master/CHANGELOG.md#062)
34+
- [diff](https://github.com/getsentry/sentry-native/compare/0.6.1...0.6.2)
3235

3336
## 6.18.1
3437

sentry-android-core/api/sentry-android-core.api

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,7 @@ public final class io/sentry/android/core/SentryAndroidOptions : io/sentry/Sentr
208208
public fun enableAllAutoBreadcrumbs (Z)V
209209
public fun getAnrTimeoutIntervalMillis ()J
210210
public fun getDebugImagesLoader ()Lio/sentry/android/core/IDebugImagesLoader;
211+
public fun getNativeSdkName ()Ljava/lang/String;
211212
public fun getProfilingTracesHz ()I
212213
public fun getProfilingTracesIntervalMillis ()I
213214
public fun getStartupCrashDurationThresholdMillis ()J
@@ -239,6 +240,7 @@ public final class io/sentry/android/core/SentryAndroidOptions : io/sentry/Sentr
239240
public fun setEnableFramesTracking (Z)V
240241
public fun setEnableNetworkEventBreadcrumbs (Z)V
241242
public fun setEnableSystemEventBreadcrumbs (Z)V
243+
public fun setNativeSdkName (Ljava/lang/String;)V
242244
public fun setProfilingTracesHz (I)V
243245
public fun setProfilingTracesIntervalMillis (I)V
244246
}

sentry-android-core/src/main/java/io/sentry/android/core/SentryAndroidOptions.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import io.sentry.protocol.SdkVersion;
99
import org.jetbrains.annotations.ApiStatus;
1010
import org.jetbrains.annotations.NotNull;
11+
import org.jetbrains.annotations.Nullable;
1112
import org.jetbrains.annotations.TestOnly;
1213

1314
/** Sentry SDK options for Android */
@@ -133,6 +134,8 @@ public final class SentryAndroidOptions extends SentryOptions {
133134

134135
private boolean enableFramesTracking = true;
135136

137+
private @Nullable String nativeSdkName = null;
138+
136139
public SentryAndroidOptions() {
137140
setSentryClientName(BuildConfig.SENTRY_ANDROID_SDK_NAME + "/" + BuildConfig.VERSION_NAME);
138141
setSdkVersion(createSdkVersion());
@@ -402,4 +405,25 @@ void setStartupCrashFlushTimeoutMillis(long startupCrashFlushTimeoutMillis) {
402405
public long getStartupCrashDurationThresholdMillis() {
403406
return startupCrashDurationThresholdMillis;
404407
}
408+
409+
/**
410+
* Sets the sdk name for the sentry-native ndk module. The value is used for the event->sdk
411+
* attribute and the sentry_client auth header.
412+
*
413+
* @param nativeSdkName the native sdk name
414+
*/
415+
@ApiStatus.Internal
416+
public void setNativeSdkName(final @Nullable String nativeSdkName) {
417+
this.nativeSdkName = nativeSdkName;
418+
}
419+
420+
/**
421+
* Returns the sdk name for the sentry native ndk module.
422+
*
423+
* @return the custom SDK name if set, otherwise null
424+
*/
425+
@ApiStatus.Internal
426+
public @Nullable String getNativeSdkName() {
427+
return nativeSdkName;
428+
}
405429
}

sentry-android-core/src/test/java/io/sentry/android/core/SentryAndroidOptionsTest.kt

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import kotlin.test.Test
1010
import kotlin.test.assertEquals
1111
import kotlin.test.assertFalse
1212
import kotlin.test.assertNotNull
13+
import kotlin.test.assertNull
1314
import kotlin.test.assertTrue
1415

1516
class SentryAndroidOptionsTest {
@@ -111,6 +112,27 @@ class SentryAndroidOptionsTest {
111112
assertFalse(sentryOptions.isAttachViewHierarchy)
112113
}
113114

115+
@Test
116+
fun `native sdk name is null by default`() {
117+
val sentryOptions = SentryAndroidOptions()
118+
assertNull(sentryOptions.nativeSdkName)
119+
}
120+
121+
@Test
122+
fun `native sdk name can be properly set`() {
123+
val sentryOptions = SentryAndroidOptions()
124+
sentryOptions.nativeSdkName = "test_ndk_name"
125+
assertEquals("test_ndk_name", sentryOptions.nativeSdkName)
126+
}
127+
128+
@Test
129+
fun `native sdk name can be properly set to null`() {
130+
val sentryOptions = SentryAndroidOptions()
131+
sentryOptions.nativeSdkName = "test_ndk_name"
132+
sentryOptions.nativeSdkName = null
133+
assertNull(sentryOptions.nativeSdkName)
134+
}
135+
114136
private class CustomDebugImagesLoader : IDebugImagesLoader {
115137
override fun loadDebugImages(): List<DebugImage>? = null
116138
override fun clearDebugImages() {}

sentry-android-ndk/src/main/jni/sentry.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,8 @@ Java_io_sentry_android_ndk_SentryNdk_initSentryNative(
252252
"()Ljava/lang/String;");
253253
jmethodID dist_mid = (*env)->GetMethodID(env, options_cls, "getDist", "()Ljava/lang/String;");
254254
jmethodID max_crumbs_mid = (*env)->GetMethodID(env, options_cls, "getMaxBreadcrumbs", "()I");
255+
jmethodID native_sdk_name_mid = (*env)->GetMethodID(env, options_cls, "getNativeSdkName",
256+
"()Ljava/lang/String;");
255257

256258
(*env)->DeleteLocalRef(env, options_cls);
257259

@@ -264,6 +266,7 @@ Java_io_sentry_android_ndk_SentryNdk_initSentryNative(
264266
char *release_str = NULL;
265267
char *environment_str = NULL;
266268
char *dist_str = NULL;
269+
char *native_sdk_name_str = NULL;
267270

268271
options = sentry_options_new();
269272
ENSURE_OR_FAIL(options);
@@ -328,6 +331,12 @@ Java_io_sentry_android_ndk_SentryNdk_initSentryNative(
328331
sentry_free(dist_str);
329332
}
330333

334+
native_sdk_name_str = call_get_string(env, sentry_sdk_options, native_sdk_name_mid);
335+
if (native_sdk_name_str) {
336+
sentry_options_set_sdk_name(options, native_sdk_name_str);
337+
sentry_free(native_sdk_name_str);
338+
}
339+
331340
sentry_init(options);
332341
return;
333342

0 commit comments

Comments
 (0)