From b98fb2bc9eb40d590313482cbe07ee0c37c23eaa Mon Sep 17 00:00:00 2001 From: William Cisang Date: Fri, 3 Mar 2023 11:26:04 -0300 Subject: [PATCH 1/5] add support to set ProGuard uuid --- dart/lib/src/sentry_options.dart | 3 +++ .../main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt | 1 + flutter/lib/src/integrations/native_sdk_integration.dart | 1 + .../integrations/init_native_sdk_integration_test.dart | 9 ++++++--- flutter/test/mocks.dart | 1 + 5 files changed, 12 insertions(+), 3 deletions(-) diff --git a/dart/lib/src/sentry_options.dart b/dart/lib/src/sentry_options.dart index 182c3d0ccd..af9d9fa28a 100644 --- a/dart/lib/src/sentry_options.dart +++ b/dart/lib/src/sentry_options.dart @@ -279,6 +279,9 @@ class SentryOptions { /// If enabled, [scopeObservers] will be called when mutating scope. bool enableScopeSync = true; + /// Sets the ProGuard uuid for Android platform. + String? proGuardUuid; + final List _scopeObservers = []; List get scopeObservers => _scopeObservers; 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 4279a0bf32..bba973ea81 100644 --- a/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt +++ b/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt @@ -145,6 +145,7 @@ class SentryFlutterPlugin : FlutterPlugin, MethodCallHandler, ActivityAware { args.getIfNotNull("anrEnabled") { options.isAnrEnabled = it } args.getIfNotNull("sendDefaultPii") { options.isSendDefaultPii = it } args.getIfNotNull("enableNdkScopeSync") { options.isEnableScopeSync = it } + args.getIfNotNull("proGuardUuid") { options.proguardUuid = it } val nativeCrashHandling = (args["enableNativeCrashHandling"] as? Boolean) ?: true // nativeCrashHandling has priority over anrEnabled diff --git a/flutter/lib/src/integrations/native_sdk_integration.dart b/flutter/lib/src/integrations/native_sdk_integration.dart index 091a4607db..67c84fc466 100644 --- a/flutter/lib/src/integrations/native_sdk_integration.dart +++ b/flutter/lib/src/integrations/native_sdk_integration.dart @@ -44,6 +44,7 @@ class NativeSdkIntegration extends Integration { 'enableNdkScopeSync': options.enableNdkScopeSync, 'enableAutoPerformanceTracking': options.enableAutoPerformanceTracking, 'sendClientReports': options.sendClientReports, + 'proGuardUuid': options.proGuardUuid, }); options.sdk.addIntegration('nativeSdkIntegration'); diff --git a/flutter/test/integrations/init_native_sdk_integration_test.dart b/flutter/test/integrations/init_native_sdk_integration_test.dart index d33f845d9d..621dbeaaec 100644 --- a/flutter/test/integrations/init_native_sdk_integration_test.dart +++ b/flutter/test/integrations/init_native_sdk_integration_test.dart @@ -55,7 +55,8 @@ void main() { 'enableOutOfMemoryTracking': true, 'enableNdkScopeSync': false, 'enableAutoPerformanceTracking': true, - 'sendClientReports': true + 'sendClientReports': true, + 'proGuardUuid': null }); }); @@ -88,7 +89,8 @@ void main() { ..enableOutOfMemoryTracking = false ..enableNdkScopeSync = true ..enableAutoPerformanceTracking = false - ..sendClientReports = false; + ..sendClientReports = false + ..proGuardUuid = fakeProGuardUuid; options.sdk.addIntegration('foo'); options.sdk.addPackage('bar', '1'); @@ -124,7 +126,8 @@ void main() { 'enableOutOfMemoryTracking': false, 'enableNdkScopeSync': true, 'enableAutoPerformanceTracking': false, - 'sendClientReports': false + 'sendClientReports': false, + 'proGuardUuid': fakeProGuardUuid }); }); diff --git a/flutter/test/mocks.dart b/flutter/test/mocks.dart index dc86fdedc3..ddd4180a6e 100644 --- a/flutter/test/mocks.dart +++ b/flutter/test/mocks.dart @@ -17,6 +17,7 @@ import 'mocks.mocks.dart'; import 'no_such_method_provider.dart'; const fakeDsn = 'https://abc@def.ingest.sentry.io/1234567'; +const fakeProGuardUuid = '3457d982-65ef-576d-a6ad-65b5f30f49a5'; // https://github.com/dart-lang/mockito/blob/master/NULL_SAFETY_README.md#fallback-generators ISentrySpan startTransactionShim( From 073e80efd62d0a4b6d9c202835651c7662bcb42a Mon Sep 17 00:00:00 2001 From: William Cisang Date: Fri, 3 Mar 2023 14:28:24 -0300 Subject: [PATCH 2/5] set proguardUuid in sentry_flutter_options --- dart/lib/src/sentry_options.dart | 3 --- .../main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt | 2 +- flutter/lib/src/integrations/native_sdk_integration.dart | 2 +- flutter/lib/src/sentry_flutter_options.dart | 3 +++ .../test/integrations/init_native_sdk_integration_test.dart | 6 +++--- flutter/test/mocks.dart | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/dart/lib/src/sentry_options.dart b/dart/lib/src/sentry_options.dart index af9d9fa28a..182c3d0ccd 100644 --- a/dart/lib/src/sentry_options.dart +++ b/dart/lib/src/sentry_options.dart @@ -279,9 +279,6 @@ class SentryOptions { /// If enabled, [scopeObservers] will be called when mutating scope. bool enableScopeSync = true; - /// Sets the ProGuard uuid for Android platform. - String? proGuardUuid; - final List _scopeObservers = []; List get scopeObservers => _scopeObservers; 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 bba973ea81..b38dec8e78 100644 --- a/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt +++ b/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt @@ -145,7 +145,7 @@ class SentryFlutterPlugin : FlutterPlugin, MethodCallHandler, ActivityAware { args.getIfNotNull("anrEnabled") { options.isAnrEnabled = it } args.getIfNotNull("sendDefaultPii") { options.isSendDefaultPii = it } args.getIfNotNull("enableNdkScopeSync") { options.isEnableScopeSync = it } - args.getIfNotNull("proGuardUuid") { options.proguardUuid = it } + args.getIfNotNull("proguardUuid") { options.proguardUuid = it } val nativeCrashHandling = (args["enableNativeCrashHandling"] as? Boolean) ?: true // nativeCrashHandling has priority over anrEnabled diff --git a/flutter/lib/src/integrations/native_sdk_integration.dart b/flutter/lib/src/integrations/native_sdk_integration.dart index 67c84fc466..a96b5213cf 100644 --- a/flutter/lib/src/integrations/native_sdk_integration.dart +++ b/flutter/lib/src/integrations/native_sdk_integration.dart @@ -44,7 +44,7 @@ class NativeSdkIntegration extends Integration { 'enableNdkScopeSync': options.enableNdkScopeSync, 'enableAutoPerformanceTracking': options.enableAutoPerformanceTracking, 'sendClientReports': options.sendClientReports, - 'proGuardUuid': options.proGuardUuid, + 'proguardUuid': options.proguardUuid, }); options.sdk.addIntegration('nativeSdkIntegration'); diff --git a/flutter/lib/src/sentry_flutter_options.dart b/flutter/lib/src/sentry_flutter_options.dart index 1f5318f96d..733c58d36d 100644 --- a/flutter/lib/src/sentry_flutter_options.dart +++ b/flutter/lib/src/sentry_flutter_options.dart @@ -202,6 +202,9 @@ class SentryFlutterOptions extends SentryOptions { /// runApp(SentryUserInteractionWidget(child: App())); bool enableUserInteractionTracing = false; + /// Sets the Proguard uuid for Android platform. + String? proguardUuid; + @internal late RendererWrapper rendererWrapper = RendererWrapper(); diff --git a/flutter/test/integrations/init_native_sdk_integration_test.dart b/flutter/test/integrations/init_native_sdk_integration_test.dart index 621dbeaaec..a4fbb1060c 100644 --- a/flutter/test/integrations/init_native_sdk_integration_test.dart +++ b/flutter/test/integrations/init_native_sdk_integration_test.dart @@ -56,7 +56,7 @@ void main() { 'enableNdkScopeSync': false, 'enableAutoPerformanceTracking': true, 'sendClientReports': true, - 'proGuardUuid': null + 'proguardUuid': null }); }); @@ -90,7 +90,7 @@ void main() { ..enableNdkScopeSync = true ..enableAutoPerformanceTracking = false ..sendClientReports = false - ..proGuardUuid = fakeProGuardUuid; + ..proguardUuid = fakeProguardUuid; options.sdk.addIntegration('foo'); options.sdk.addPackage('bar', '1'); @@ -127,7 +127,7 @@ void main() { 'enableNdkScopeSync': true, 'enableAutoPerformanceTracking': false, 'sendClientReports': false, - 'proGuardUuid': fakeProGuardUuid + 'proguardUuid': fakeProguardUuid }); }); diff --git a/flutter/test/mocks.dart b/flutter/test/mocks.dart index ddd4180a6e..a5badb9092 100644 --- a/flutter/test/mocks.dart +++ b/flutter/test/mocks.dart @@ -17,7 +17,7 @@ import 'mocks.mocks.dart'; import 'no_such_method_provider.dart'; const fakeDsn = 'https://abc@def.ingest.sentry.io/1234567'; -const fakeProGuardUuid = '3457d982-65ef-576d-a6ad-65b5f30f49a5'; +const fakeProguardUuid = '3457d982-65ef-576d-a6ad-65b5f30f49a5'; // https://github.com/dart-lang/mockito/blob/master/NULL_SAFETY_README.md#fallback-generators ISentrySpan startTransactionShim( From 1395eddd53bb55e232ac45b299b140152e0f4a21 Mon Sep 17 00:00:00 2001 From: William Cisang Date: Mon, 6 Mar 2023 11:18:15 -0300 Subject: [PATCH 3/5] add changelog feature information --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c3a50407ed..6a49a226eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## Unreleased +### Features + +- Add proguard_uui property to SentryFlutterOptions to set proguard information at runtime ([#1312](https://github.com/getsentry/sentry-dart/pull/1312)) + ### Fixes - Change podspec `EXCLUDED_ARCHS` value to allow podfiles to add more excluded architetures ([#1303](https://github.com/getsentry/sentry-dart/pull/1303)) From 77c48054471b326041db7bfdd102572afc7dd9a4 Mon Sep 17 00:00:00 2001 From: Manoel Aranda Neto Date: Mon, 6 Mar 2023 16:05:51 +0100 Subject: [PATCH 4/5] fix detekt --- flutter/config/detekt-bl.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/flutter/config/detekt-bl.xml b/flutter/config/detekt-bl.xml index a3fafd4210..915f991b70 100644 --- a/flutter/config/detekt-bl.xml +++ b/flutter/config/detekt-bl.xml @@ -2,7 +2,8 @@ - ComplexMethod:SentryFlutterPlugin.kt$SentryFlutterPlugin$override fun onMethodCall(call: MethodCall, result: Result) + CyclomaticComplexMethod:SentryFlutterPlugin.kt$SentryFlutterPlugin$override fun onMethodCall(call: MethodCall, result: Result) + LongMethod:SentryFlutterPlugin.kt$SentryFlutterPlugin$private fun initNativeSdk(call: MethodCall, result: Result) MagicNumber:MainActivity.kt$MainActivity$6_000 TooGenericExceptionCaught:MainActivity.kt$MainActivity$e: Exception TooGenericExceptionThrown:MainActivity.kt$MainActivity$throw Exception("Catch this java exception thrown from Kotlin thread!") From efd7d46472da7bb3ca148d3a5cf6ee008634bf6c Mon Sep 17 00:00:00 2001 From: Manoel Aranda Neto Date: Mon, 6 Mar 2023 16:07:34 +0100 Subject: [PATCH 5/5] fix --- flutter/config/detekt-bl.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flutter/config/detekt-bl.xml b/flutter/config/detekt-bl.xml index 915f991b70..c1eb7af938 100644 --- a/flutter/config/detekt-bl.xml +++ b/flutter/config/detekt-bl.xml @@ -2,7 +2,7 @@ - CyclomaticComplexMethod:SentryFlutterPlugin.kt$SentryFlutterPlugin$override fun onMethodCall(call: MethodCall, result: Result) + ComplexMethod:SentryFlutterPlugin.kt$SentryFlutterPlugin$override fun onMethodCall(call: MethodCall, result: Result) LongMethod:SentryFlutterPlugin.kt$SentryFlutterPlugin$private fun initNativeSdk(call: MethodCall, result: Result) MagicNumber:MainActivity.kt$MainActivity$6_000 TooGenericExceptionCaught:MainActivity.kt$MainActivity$e: Exception