diff --git a/CHANGELOG.md b/CHANGELOG.md index 70c7c35fa1..58b780c9cf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # Unreleased +* Bump: sentry-android to v4.3.0 (#343) + # 4.1.0-nullsafety.0 * Fix: Do not append stack trace to the exception if there are no frames diff --git a/flutter/android/build.gradle b/flutter/android/build.gradle index a8e6f98b11..f9fa2f9846 100644 --- a/flutter/android/build.gradle +++ b/flutter/android/build.gradle @@ -1,5 +1,5 @@ buildscript { - ext.kotlin_version = '1.4.10' + ext.kotlin_version = '1.4.31' repositories { google() jcenter() @@ -54,6 +54,6 @@ android { } dependencies { - api 'io.sentry:sentry-android:4.0.0' + api 'io.sentry:sentry-android:4.3.0' implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" } diff --git a/flutter/android/proguard-rules.pro b/flutter/android/proguard-rules.pro index a01311c578..d64759b4c6 100644 --- a/flutter/android/proguard-rules.pro +++ b/flutter/android/proguard-rules.pro @@ -1 +1,5 @@ -keep class io.sentry.flutter.** { *; } + +# To ensure that stack traces is unambiguous +# https://developer.android.com/studio/build/shrink-code#decode-stack-trace +-keepattributes LineNumberTable,SourceFile diff --git a/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt b/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt index 2a6aaa3a1f..335638ccb8 100644 --- a/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt +++ b/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt @@ -87,7 +87,7 @@ class SentryFlutterPlugin : FlutterPlugin, MethodCallHandler { args.getIfNotNull("maxBreadcrumbs") { options.maxBreadcrumbs = it } args.getIfNotNull("cacheDirSize") { options.cacheDirSize = it } args.getIfNotNull("diagnosticLevel") { - if (options.isDebug == true) { + if (options.isDebug) { val sentryLevel = SentryLevel.valueOf(it.toUpperCase(Locale.ROOT)) options.setDiagnosticLevel(sentryLevel) } @@ -97,7 +97,7 @@ class SentryFlutterPlugin : FlutterPlugin, MethodCallHandler { val nativeCrashHandling = (args["enableNativeCrashHandling"] as? Boolean) ?: true // nativeCrashHandling has priority over anrEnabled if (!nativeCrashHandling) { - options.setEnableUncaughtExceptionHandler(false) + options.enableUncaughtExceptionHandler = false options.isAnrEnabled = false // if split symbols are enabled, we need Ndk integration so we can't really offer the option // to turn it off @@ -168,12 +168,12 @@ class SentryFlutterPlugin : FlutterPlugin, MethodCallHandler { private val nativeSdk = "sentry.native" private fun setEventOriginTag(event: SentryEvent) { - val sdk = event.sdk - if (isValidSdk(sdk)) { - when (sdk!!.name) { + event.sdk?.let { + when (it.name) { flutterSdk -> setEventEnvironmentTag(event, "flutter", "dart") androidSdk -> setEventEnvironmentTag(event, environment = "java") nativeSdk -> setEventEnvironmentTag(event, environment = "native") + else -> return } } } @@ -183,30 +183,24 @@ class SentryFlutterPlugin : FlutterPlugin, MethodCallHandler { event.setTag("event.environment", environment) } - private fun isValidSdk(sdk: SdkVersion?): Boolean { - return (sdk != null && !sdk.name.isNullOrEmpty()) - } - private fun addPackages(event: SentryEvent, sdk: SdkVersion?) { - if (isValidSdk(event.sdk)) { - when (event.sdk!!.name) { - flutterSdk -> { - sdk?.packages?.forEach { sentryPackage -> - event.sdk?.addPackage(sentryPackage.name, sentryPackage.version) - } - sdk?.integrations?.forEach { integration -> - event.sdk?.addIntegration(integration) - } + event.sdk?.let { + if (it.name == flutterSdk) { + sdk?.packages?.forEach { sentryPackage -> + it.addPackage(sentryPackage.name, sentryPackage.version) + } + sdk?.integrations?.forEach { integration -> + it.addIntegration(integration) } } } } private fun removeThreadsIfNotAndroid(event: SentryEvent) { - if (isValidSdk(event.sdk)) { + event.sdk?.let { // we do not want the thread list if not an android event, the thread info is mostly about // the file observer anyway - if (event.sdk!!.name != androidSdk && event.threads != null) { + if (it.name != androidSdk && event.threads != null) { event.threads.clear() } }