@@ -3,6 +3,7 @@ package io.sentry.flutter
3
3
import android.app.Activity
4
4
import android.content.Context
5
5
import android.os.Build
6
+ import android.os.Looper
6
7
import android.util.Log
7
8
import io.flutter.embedding.engine.plugins.FlutterPlugin
8
9
import io.flutter.embedding.engine.plugins.activity.ActivityAware
@@ -49,8 +50,8 @@ class SentryFlutterPlugin : FlutterPlugin, MethodCallHandler, ActivityAware {
49
50
50
51
sentryFlutter =
51
52
SentryFlutter (
52
- androidSdk = androidSdk ,
53
- nativeSdk = nativeSdk ,
53
+ androidSdk = ANDROID_SDK ,
54
+ nativeSdk = NATIVE_SDK ,
54
55
)
55
56
}
56
57
@@ -74,6 +75,7 @@ class SentryFlutterPlugin : FlutterPlugin, MethodCallHandler, ActivityAware {
74
75
" removeTag" -> removeTag(call.argument(" key" ), result)
75
76
" loadContexts" -> loadContexts(result)
76
77
" displayRefreshRate" -> displayRefreshRate(result)
78
+ " nativeCrash" -> crash()
77
79
else -> result.notImplemented()
78
80
}
79
81
}
@@ -413,16 +415,17 @@ class SentryFlutterPlugin : FlutterPlugin, MethodCallHandler, ActivityAware {
413
415
}
414
416
415
417
companion object {
418
+ private const val FLUTTER_SDK = " sentry.dart.flutter"
419
+ private const val ANDROID_SDK = " sentry.java.android.flutter"
420
+ private const val NATIVE_SDK = " sentry.native.android.flutter"
421
+ private const val NATIVE_CRASH_WAIT_TIME = 500L
416
422
417
- private const val flutterSdk = " sentry.dart.flutter"
418
- private const val androidSdk = " sentry.java.android.flutter"
419
- private const val nativeSdk = " sentry.native.android.flutter"
420
423
private fun setEventOriginTag (event : SentryEvent ) {
421
424
event.sdk?.let {
422
425
when (it.name) {
423
- flutterSdk -> setEventEnvironmentTag(event, " flutter" , " dart" )
424
- androidSdk -> setEventEnvironmentTag(event, environment = " java" )
425
- nativeSdk -> setEventEnvironmentTag(event, environment = " native" )
426
+ FLUTTER_SDK -> setEventEnvironmentTag(event, " flutter" , " dart" )
427
+ ANDROID_SDK -> setEventEnvironmentTag(event, environment = " java" )
428
+ NATIVE_SDK -> setEventEnvironmentTag(event, environment = " native" )
426
429
else -> return
427
430
}
428
431
}
@@ -439,7 +442,7 @@ class SentryFlutterPlugin : FlutterPlugin, MethodCallHandler, ActivityAware {
439
442
440
443
private fun addPackages (event : SentryEvent , sdk : SdkVersion ? ) {
441
444
event.sdk?.let {
442
- if (it.name == flutterSdk ) {
445
+ if (it.name == FLUTTER_SDK ) {
443
446
sdk?.packageSet?.forEach { sentryPackage ->
444
447
it.addPackage(sentryPackage.name, sentryPackage.version)
445
448
}
@@ -449,6 +452,13 @@ class SentryFlutterPlugin : FlutterPlugin, MethodCallHandler, ActivityAware {
449
452
}
450
453
}
451
454
}
455
+
456
+ private fun crash () {
457
+ val exception = RuntimeException (" FlutterSentry Native Integration: Sample RuntimeException" )
458
+ val mainThread = Looper .getMainLooper().thread
459
+ mainThread.uncaughtExceptionHandler.uncaughtException(mainThread, exception)
460
+ mainThread.join(NATIVE_CRASH_WAIT_TIME )
461
+ }
452
462
}
453
463
454
464
private fun loadContexts (result : Result ) {
0 commit comments