From f1314d57fef996236ceca00725cc9c3acce16d85 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 9 Mar 2023 11:08:30 +0000 Subject: [PATCH 1/4] chore(deps): update Flutter SDK (metrics) to v3.7.7 (#1319) --- metrics/flutter.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metrics/flutter.properties b/metrics/flutter.properties index 353a4fb407..c415acf50f 100644 --- a/metrics/flutter.properties +++ b/metrics/flutter.properties @@ -1,2 +1,2 @@ -version = 3.7.6 +version = 3.7.7 repo = https://github.com/flutter/flutter From 66c9a56ed3e7f207f2015a410b80b516800aff98 Mon Sep 17 00:00:00 2001 From: Manoel Aranda Neto <5731772+marandaneto@users.noreply.github.com> Date: Mon, 13 Mar 2023 09:51:27 +0100 Subject: [PATCH 2/4] Fix SDK names in the native SDKs (#1320) --- dart/lib/src/version.dart | 2 +- .../io/sentry/flutter/SentryFlutterPlugin.kt | 23 +++++++++++-------- .../macos/Runner.xcodeproj/project.pbxproj | 5 ++-- .../xcshareddata/xcschemes/Runner.xcscheme | 2 +- .../Classes/SentryFlutterPluginApple.swift | 8 +++---- 5 files changed, 21 insertions(+), 19 deletions(-) diff --git a/dart/lib/src/version.dart b/dart/lib/src/version.dart index 18f5bd2ae5..a65892cf75 100644 --- a/dart/lib/src/version.dart +++ b/dart/lib/src/version.dart @@ -17,7 +17,7 @@ String sdkName(bool isWeb) => isWeb ? _browserSdkName : _ioSdkName; const String _ioSdkName = 'sentry.dart'; /// The SDK name for web projects reported to Sentry.io in the submitted events. -const String _browserSdkName = 'sentry.dart.browser'; +const String _browserSdkName = '$_ioSdkName.browser'; /// The name of the SDK platform reported to Sentry.io in the submitted events. /// 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 adf8469054..01e5b2f479 100644 --- a/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt +++ b/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt @@ -18,6 +18,7 @@ import io.sentry.Sentry import io.sentry.DateUtils import io.sentry.android.core.ActivityFramesTracker import io.sentry.android.core.AppStartState +import io.sentry.android.core.BuildConfig.VERSION_NAME import io.sentry.android.core.LoadClass import io.sentry.android.core.SentryAndroid import io.sentry.android.core.SentryAndroidOptions @@ -165,16 +166,18 @@ class SentryFlutterPlugin : FlutterPlugin, MethodCallHandler, ActivityAware { args.getIfNotNull("sendClientReports") { options.isSendClientReports = it } - args.getIfNotNull>("sdk") { sdk -> - val name = sdk["name"] as? String - val version = sdk["version"] as? String - if (name != null && version != null) { - val sdkVersion = SdkVersion(name, version) - options.setSentryClientName("$name/$version") - options.setSdkVersion(sdkVersion) - } + val name = "sentry.java.android.flutter" + + var sdkVersion = options.sdkVersion + if (sdkVersion == null) { + sdkVersion = SdkVersion(name, VERSION_NAME) + } else { + sdkVersion.name = name } + options.sdkVersion = sdkVersion + options.sentryClientName = "$name/$VERSION_NAME" + options.setBeforeSend { event, _ -> setEventOriginTag(event) addPackages(event, options.sdkVersion) @@ -476,10 +479,10 @@ class SentryFlutterPlugin : FlutterPlugin, MethodCallHandler, ActivityAware { private fun addPackages(event: SentryEvent, sdk: SdkVersion?) { event.sdk?.let { if (it.name == flutterSdk) { - sdk?.packages?.forEach { sentryPackage -> + sdk?.packageSet?.forEach { sentryPackage -> it.addPackage(sentryPackage.name, sentryPackage.version) } - sdk?.integrations?.forEach { integration -> + sdk?.integrationSet?.forEach { integration -> it.addIntegration(integration) } } diff --git a/flutter/example/macos/Runner.xcodeproj/project.pbxproj b/flutter/example/macos/Runner.xcodeproj/project.pbxproj index ed6c5d16ab..d74803f7c0 100644 --- a/flutter/example/macos/Runner.xcodeproj/project.pbxproj +++ b/flutter/example/macos/Runner.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 51; + objectVersion = 54; objects = { /* Begin PBXAggregateTarget section */ @@ -209,7 +209,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 0930; + LastUpgradeCheck = 1300; ORGANIZATIONNAME = ""; TargetAttributes = { 33CC10EC2044A3C60003C045 = { @@ -262,6 +262,7 @@ /* Begin PBXShellScriptBuildPhase section */ 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); diff --git a/flutter/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/flutter/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index d9ffbdd84c..152c342968 100644 --- a/flutter/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/flutter/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ Date: Mon, 13 Mar 2023 13:32:07 +0000 Subject: [PATCH 3/4] Split `min_version_test.yml` Android and iOS in different jobs (#1325) --- .github/workflows/min_version_test.yml | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/.github/workflows/min_version_test.yml b/.github/workflows/min_version_test.yml index fc4fe191d0..17ca6cb00e 100644 --- a/.github/workflows/min_version_test.yml +++ b/.github/workflows/min_version_test.yml @@ -15,8 +15,7 @@ jobs: with: access_token: ${{ github.token }} - build: - name: Build + build-android: runs-on: macos-latest timeout-minutes: 30 @@ -32,9 +31,25 @@ jobs: with: flutter-version: '3.0.0' # Add flutter build web (missing index) - - name: Build + - name: Build Android run: | cd min_version_test flutter pub get - flutter build ios --no-codesign - flutter build appbundle \ No newline at end of file + flutter build appbundle + + build-ios: + runs-on: macos-latest + timeout-minutes: 30 + + steps: + - uses: actions/checkout@v3 + + - uses: subosito/flutter-action@dbf1fa04f4d2e52c33185153d06cdb5443aa189d # pin@v2 + with: + flutter-version: '3.0.0' + # Add flutter build web (missing index) + - name: Build iOS + run: | + cd min_version_test + flutter pub get + flutter build ios --no-codesign \ No newline at end of file From 9e1312afbc5bb135d51a71d158954de79c227877 Mon Sep 17 00:00:00 2001 From: Manoel Aranda Neto <5731772+marandaneto@users.noreply.github.com> Date: Tue, 14 Mar 2023 14:46:57 +0100 Subject: [PATCH 4/4] Missing Hint type (#1328) --- .../src/event_processor/deduplication_event_processor.dart | 3 ++- .../exception/io_exception_event_processor.dart | 3 ++- .../exception/web_exception_event_processor.dart | 3 ++- dart/lib/src/scope.dart | 4 ++-- dart/test/scope_test.dart | 2 +- .../event_processor/flutter_exception_event_processor.dart | 2 +- .../src/event_processor/native_app_start_event_processor.dart | 2 +- .../lib/src/event_processor/screenshot_event_processor.dart | 2 +- flutter/lib/src/integrations/load_contexts_integration.dart | 2 +- flutter/lib/src/integrations/load_image_list_integration.dart | 2 +- 10 files changed, 14 insertions(+), 11 deletions(-) diff --git a/dart/lib/src/event_processor/deduplication_event_processor.dart b/dart/lib/src/event_processor/deduplication_event_processor.dart index 7864d7ee12..790ea085f6 100644 --- a/dart/lib/src/event_processor/deduplication_event_processor.dart +++ b/dart/lib/src/event_processor/deduplication_event_processor.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'dart:collection'; import '../event_processor.dart'; +import '../hint.dart'; import '../protocol.dart'; import '../sentry_options.dart'; @@ -26,7 +27,7 @@ class DeduplicationEventProcessor extends EventProcessor { final SentryOptions _options; @override - FutureOr apply(SentryEvent event, {hint}) { + FutureOr apply(SentryEvent event, {Hint? hint}) { if (event is SentryTransaction) { return event; } diff --git a/dart/lib/src/event_processor/exception/io_exception_event_processor.dart b/dart/lib/src/event_processor/exception/io_exception_event_processor.dart index 9a31ff047c..3987a62c04 100644 --- a/dart/lib/src/event_processor/exception/io_exception_event_processor.dart +++ b/dart/lib/src/event_processor/exception/io_exception_event_processor.dart @@ -1,5 +1,6 @@ import 'dart:io'; +import '../../hint.dart'; import '../../protocol.dart'; import '../../sentry_options.dart'; import 'exception_event_processor.dart'; @@ -13,7 +14,7 @@ class IoExceptionEventProcessor implements ExceptionEventProcessor { final SentryOptions _options; @override - SentryEvent apply(SentryEvent event, {dynamic hint}) { + SentryEvent apply(SentryEvent event, {Hint? hint}) { final throwable = event.throwable; if (throwable is HttpException) { return _applyHttpException(throwable, event); diff --git a/dart/lib/src/event_processor/exception/web_exception_event_processor.dart b/dart/lib/src/event_processor/exception/web_exception_event_processor.dart index c5cda3df50..ad57c9f5c2 100644 --- a/dart/lib/src/event_processor/exception/web_exception_event_processor.dart +++ b/dart/lib/src/event_processor/exception/web_exception_event_processor.dart @@ -1,3 +1,4 @@ +import '../../hint.dart'; import '../../protocol.dart'; import '../../sentry_options.dart'; import 'exception_event_processor.dart'; @@ -7,5 +8,5 @@ ExceptionEventProcessor exceptionEventProcessor(SentryOptions _) => class WebExcptionEventProcessor implements ExceptionEventProcessor { @override - SentryEvent apply(SentryEvent event, {dynamic hint}) => event; + SentryEvent apply(SentryEvent event, {Hint? hint}) => event; } diff --git a/dart/lib/src/scope.dart b/dart/lib/src/scope.dart index 996058c4c4..1aec375e15 100644 --- a/dart/lib/src/scope.dart +++ b/dart/lib/src/scope.dart @@ -143,7 +143,7 @@ class Scope { Scope(this._options); - Breadcrumb? _addBreadCrumbSync(Breadcrumb breadcrumb, {dynamic hint}) { + Breadcrumb? _addBreadCrumbSync(Breadcrumb breadcrumb, {Hint? hint}) { // bail out if maxBreadcrumbs is zero if (_options.maxBreadcrumbs == 0) { return null; @@ -185,7 +185,7 @@ class Scope { } /// Adds a breadcrumb to the breadcrumbs queue - Future addBreadcrumb(Breadcrumb breadcrumb, {dynamic hint}) async { + Future addBreadcrumb(Breadcrumb breadcrumb, {Hint? hint}) async { final addedBreadcrumb = _addBreadCrumbSync(breadcrumb, hint: hint); if (addedBreadcrumb != null) { await _callScopeObservers((scopeObserver) async => diff --git a/dart/test/scope_test.dart b/dart/test/scope_test.dart index b90d423acf..d47cf18d49 100644 --- a/dart/test/scope_test.dart +++ b/dart/test/scope_test.dart @@ -617,7 +617,7 @@ void main() { scopeObserver: fixture.mockScopeObserver, beforeBreadcrumbCallback: ( Breadcrumb? breadcrumb, { - dynamic hint, + Hint? hint, }) { return breadcrumb?.copyWith(message: "modified"); }, diff --git a/flutter/lib/src/event_processor/flutter_exception_event_processor.dart b/flutter/lib/src/event_processor/flutter_exception_event_processor.dart index 94d9cb55c4..c9f6bd6cc0 100644 --- a/flutter/lib/src/event_processor/flutter_exception_event_processor.dart +++ b/flutter/lib/src/event_processor/flutter_exception_event_processor.dart @@ -3,7 +3,7 @@ import 'package:sentry/sentry.dart'; class FlutterExceptionEventProcessor implements EventProcessor { @override - SentryEvent apply(SentryEvent event, {dynamic hint}) { + SentryEvent apply(SentryEvent event, {Hint? hint}) { final exception = event.throwable; if (exception is NetworkImageLoadException) { return _applyNetworkImageLoadException(event, exception); diff --git a/flutter/lib/src/event_processor/native_app_start_event_processor.dart b/flutter/lib/src/event_processor/native_app_start_event_processor.dart index 298e8f3808..ad6a436ba7 100644 --- a/flutter/lib/src/event_processor/native_app_start_event_processor.dart +++ b/flutter/lib/src/event_processor/native_app_start_event_processor.dart @@ -18,7 +18,7 @@ class NativeAppStartEventProcessor extends EventProcessor { final SentryNative _native; @override - FutureOr apply(SentryEvent event, {hint}) async { + FutureOr apply(SentryEvent event, {Hint? hint}) async { final appStartEnd = _native.appStartEnd; if (appStartEnd != null && diff --git a/flutter/lib/src/event_processor/screenshot_event_processor.dart b/flutter/lib/src/event_processor/screenshot_event_processor.dart index e9a06bd914..a0b1a3c53a 100644 --- a/flutter/lib/src/event_processor/screenshot_event_processor.dart +++ b/flutter/lib/src/event_processor/screenshot_event_processor.dart @@ -19,7 +19,7 @@ class ScreenshotEventProcessor extends EventProcessor { sentryScreenshotWidgetGlobalKey.currentContext != null; @override - FutureOr apply(SentryEvent event, {hint}) async { + FutureOr apply(SentryEvent event, {Hint? hint}) async { if (event.exceptions == null && event.throwable == null && _hasSentryScreenshotWidget) { diff --git a/flutter/lib/src/integrations/load_contexts_integration.dart b/flutter/lib/src/integrations/load_contexts_integration.dart index 756bff9c38..8a364da05a 100644 --- a/flutter/lib/src/integrations/load_contexts_integration.dart +++ b/flutter/lib/src/integrations/load_contexts_integration.dart @@ -40,7 +40,7 @@ class _LoadContextsIntegrationEventProcessor extends EventProcessor { final SentryFlutterOptions _options; @override - FutureOr apply(SentryEvent event, {hint}) async { + FutureOr apply(SentryEvent event, {Hint? hint}) async { try { final loadContexts = await _channel.invokeMethod('loadContexts'); diff --git a/flutter/lib/src/integrations/load_image_list_integration.dart b/flutter/lib/src/integrations/load_image_list_integration.dart index e7832d018d..4757d6be00 100644 --- a/flutter/lib/src/integrations/load_image_list_integration.dart +++ b/flutter/lib/src/integrations/load_image_list_integration.dart @@ -36,7 +36,7 @@ class _LoadImageListIntegrationEventProcessor extends EventProcessor { final SentryFlutterOptions _options; @override - FutureOr apply(SentryEvent event, {hint}) async { + FutureOr apply(SentryEvent event, {Hint? hint}) async { if (event.needsSymbolication()) { try { // we call on every event because the loaded image list is cached