Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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
Expand Down
4 changes: 2 additions & 2 deletions flutter/android/build.gradle
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
buildscript {
ext.kotlin_version = '1.4.10'
ext.kotlin_version = '1.4.31'
repositories {
google()
jcenter()
Expand Down Expand Up @@ -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"
}
4 changes: 4 additions & 0 deletions flutter/android/proguard-rules.pro
Original file line number Diff line number Diff line change
@@ -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
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the important comment 💯

-keepattributes LineNumberTable,SourceFile
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ class SentryFlutterPlugin : FlutterPlugin, MethodCallHandler {
args.getIfNotNull<Int>("maxBreadcrumbs") { options.maxBreadcrumbs = it }
args.getIfNotNull<Int>("cacheDirSize") { options.cacheDirSize = it }
args.getIfNotNull<String>("diagnosticLevel") {
if (options.isDebug == true) {
if (options.isDebug) {
val sentryLevel = SentryLevel.valueOf(it.toUpperCase(Locale.ROOT))
options.setDiagnosticLevel(sentryLevel)
}
Expand All @@ -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
Expand Down Expand Up @@ -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
}
}
}
Expand All @@ -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()
}
}
Expand Down