From 8bea1f1e12c87602db6efaccfa4bfab27a7f15a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20Andra=C5=A1ec?= Date: Mon, 16 Jan 2023 15:47:34 +0000 Subject: [PATCH] Chore: Migrate to sentry cocoa v8 (#1197) Co-authored-by: Manoel Aranda Neto <5731772+marandaneto@users.noreply.github.com> Co-authored-by: Manoel Aranda Neto Closes https://github.com/getsentry/sentry-dart/issues/1161 Closes https://github.com/getsentry/sentry-dart/issues/1185 --- CHANGELOG.md | 20 ++++- .../io/sentry/flutter/SentryFlutterPlugin.kt | 28 ++++--- flutter/config/detekt-bl.xml | 3 + .../ios/Flutter/AppFrameworkInfo.plist | 2 +- flutter/example/macos/Podfile | 2 +- .../macos/Runner.xcodeproj/project.pbxproj | 6 +- .../Classes/SentryFlutterPluginApple.swift | 16 ++-- flutter/ios/sentry_flutter.podspec | 6 +- .../integrations/native_sdk_integration.dart | 9 ++- flutter/lib/src/sentry_flutter_options.dart | 4 +- .../init_native_sdk_integration_test.dart | 39 +++++++--- .../ios/Flutter/AppFrameworkInfo.plist | 2 +- min_version_test/ios/Podfile | 2 +- .../ios/Runner.xcodeproj/project.pbxproj | 74 ++++++++++++++++++- .../contents.xcworkspacedata | 3 + 15 files changed, 170 insertions(+), 46 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 85eba7f470..d350d96f33 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## Unreleased + +### Breaking Changes + +- Rename APM tracking feature flags to tracing ([#1222](https://github.com/getsentry/sentry-dart/pull/1222)) + - Rename + - enableAutoPerformanceTracking to enableAutoPerformanceTracing + - enableOutOfMemoryTracking to enableWatchdogTerminationTracking + +### Enhancements + +- Migrate to sentry cocoa v8 ([#1197](https://github.com/getsentry/sentry-dart/pull/1197)) + ## 7.0.0-alpha.2 ### Features @@ -9,9 +22,10 @@ ### Breaking Changes - Enable APM features by default ([#1217](https://github.com/getsentry/sentry-dart/pull/1217)) - - captureFailedRequests - - enableStructuredDataTracing - - enableUserInteractionTracing + - Enable by default + - captureFailedRequests + - enableStructuredDataTracing + - enableUserInteractionTracing - Mark transaction as internal_error in case of unhandled errors ([#1218](https://github.com/getsentry/sentry-dart/pull/1218)) ## 7.0.0-alpha.1 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 368e076671..856d937779 100644 --- a/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt +++ b/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt @@ -29,14 +29,13 @@ import java.lang.ref.WeakReference import java.util.Locale import java.util.UUID -@Suppress("TooManyFunctions") class SentryFlutterPlugin : FlutterPlugin, MethodCallHandler, ActivityAware { private lateinit var channel: MethodChannel private lateinit var context: Context private var activity: WeakReference? = null private var framesTracker: ActivityFramesTracker? = null - private var autoPerformanceTrackingEnabled = false + private var autoPerformanceTracingEnabled = false override fun onAttachedToEngine(flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) { context = flutterPluginBinding.applicationContext @@ -155,28 +154,38 @@ class SentryFlutterPlugin : FlutterPlugin, MethodCallHandler, ActivityAware { // options.isEnableNdk = false } - args.getIfNotNull("enableAutoPerformanceTracking") { enableAutoPerformanceTracking -> - if (enableAutoPerformanceTracking) { - autoPerformanceTrackingEnabled = true + args.getIfNotNull("enableAutoPerformanceTracing") { enableAutoPerformanceTracing -> + if (enableAutoPerformanceTracing) { + autoPerformanceTracingEnabled = true framesTracker = ActivityFramesTracker(LoadClass(), options) } } 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) + options.setSdkVersion(sdkVersion) + } + } + options.setBeforeSend { event, _ -> setEventOriginTag(event) addPackages(event, options.sdkVersion) event } - // missing proxy, enableScopeSync + // missing proxy } result.success("") } private fun fetchNativeAppStart(result: Result) { - if (!autoPerformanceTrackingEnabled) { + if (!autoPerformanceTracingEnabled) { result.success(null) return } @@ -199,7 +208,7 @@ class SentryFlutterPlugin : FlutterPlugin, MethodCallHandler, ActivityAware { } private fun beginNativeFrames(result: Result) { - if (!autoPerformanceTrackingEnabled) { + if (!autoPerformanceTracingEnabled) { result.success(null) return } @@ -212,7 +221,7 @@ class SentryFlutterPlugin : FlutterPlugin, MethodCallHandler, ActivityAware { private fun endNativeFrames(id: String?, result: Result) { val activity = activity?.get() - if (!autoPerformanceTrackingEnabled || activity == null || id == null) { + if (!autoPerformanceTracingEnabled || activity == null || id == null) { if (id == null) { Log.w("Sentry", "Parameter id cannot be null when calling endNativeFrames.") } @@ -263,7 +272,6 @@ class SentryFlutterPlugin : FlutterPlugin, MethodCallHandler, ActivityAware { } } - @Suppress("ComplexMethod") private fun setUser(user: Map?, result: Result) { if (user == null) { Sentry.setUser(null) diff --git a/flutter/config/detekt-bl.xml b/flutter/config/detekt-bl.xml index a3fafd4210..c8da2b8940 100644 --- a/flutter/config/detekt-bl.xml +++ b/flutter/config/detekt-bl.xml @@ -3,10 +3,13 @@ ComplexMethod:SentryFlutterPlugin.kt$SentryFlutterPlugin$override fun onMethodCall(call: MethodCall, result: Result) + ComplexMethod:SentryFlutterPlugin.kt$SentryFlutterPlugin$private fun setUser(user: Map<String, Any?>?, 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!") TooGenericExceptionThrown:MainActivity.kt$MainActivity$throw RuntimeException("Catch this java exception!") TooGenericExceptionThrown:MainActivity.kt$MainActivity$throw RuntimeException("Catch this platform exception!") + TooManyFunctions:SentryFlutterPlugin.kt$SentryFlutterPlugin : FlutterPluginMethodCallHandlerActivityAware diff --git a/flutter/example/ios/Flutter/AppFrameworkInfo.plist b/flutter/example/ios/Flutter/AppFrameworkInfo.plist index c323607ea1..1bdf525f9f 100644 --- a/flutter/example/ios/Flutter/AppFrameworkInfo.plist +++ b/flutter/example/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 9.0 + 11.0 diff --git a/flutter/example/macos/Podfile b/flutter/example/macos/Podfile index dade8dfad0..fe733905db 100644 --- a/flutter/example/macos/Podfile +++ b/flutter/example/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.11' +platform :osx, '10.13' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/flutter/example/macos/Runner.xcodeproj/project.pbxproj b/flutter/example/macos/Runner.xcodeproj/project.pbxproj index 2d7e217ce7..ed6c5d16ab 100644 --- a/flutter/example/macos/Runner.xcodeproj/project.pbxproj +++ b/flutter/example/macos/Runner.xcodeproj/project.pbxproj @@ -411,7 +411,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.11; + MACOSX_DEPLOYMENT_TARGET = 10.13; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -491,7 +491,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.11; + MACOSX_DEPLOYMENT_TARGET = 10.13; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -538,7 +538,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.11; + MACOSX_DEPLOYMENT_TARGET = 10.13; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/flutter/ios/Classes/SentryFlutterPluginApple.swift b/flutter/ios/Classes/SentryFlutterPluginApple.swift index 52749c989d..2847dc3c3a 100644 --- a/flutter/ios/Classes/SentryFlutterPluginApple.swift +++ b/flutter/ios/Classes/SentryFlutterPluginApple.swift @@ -197,13 +197,19 @@ public class SentryFlutterPluginApple: NSObject, FlutterPlugin { SentrySDK.start { options in self.updateOptions(arguments: arguments, options: options) - if arguments["enableAutoPerformanceTracking"] as? Bool ?? false { + if arguments["enableAutoPerformanceTracing"] as? Bool ?? false { PrivateSentrySDKOnly.appStartMeasurementHybridSDKMode = true #if os(iOS) || targetEnvironment(macCatalyst) PrivateSentrySDKOnly.framesTrackingMeasurementHybridSDKMode = true #endif } + if let sdk = arguments["sdk"] as? [String: Any?], + let name = sdk["name"] as? String, + let version = sdk["version"] as? String { + PrivateSentrySDKOnly.setSdkName(name, andVersionString: version) + } + // note : for now, in sentry-cocoa, beforeSend is not called before captureEnvelope options.beforeSend = { event in self.setEventOriginTag(event: event) @@ -233,7 +239,7 @@ public class SentryFlutterPluginApple: NSObject, FlutterPlugin { if didReceiveDidBecomeActiveNotification && (PrivateSentrySDKOnly.options.enableAutoSessionTracking || - PrivateSentrySDKOnly.options.enableOutOfMemoryTracking) { + PrivateSentrySDKOnly.options.enableWatchdogTerminationTracking) { // We send a SentryHybridSdkDidBecomeActive to the Sentry Cocoa SDK, so the SDK will mimics // the didBecomeActiveNotification notification. This is needed for session and OOM tracking. NotificationCenter.default.post(name: Notification.Name("SentryHybridSdkDidBecomeActive"), object: nil) @@ -313,8 +319,8 @@ public class SentryFlutterPluginApple: NSObject, FlutterPlugin { options.maxCacheItems = maxCacheItems } - if let enableOutOfMemoryTracking = arguments["enableOutOfMemoryTracking"] as? Bool { - options.enableOutOfMemoryTracking = enableOutOfMemoryTracking + if let enableWatchdogTerminationTracking = arguments["enableWatchdogTerminationTracking"] as? Bool { + options.enableWatchdogTerminationTracking = enableWatchdogTerminationTracking } if let sendClientReports = arguments["sendClientReports"] as? Bool { @@ -581,7 +587,7 @@ public class SentryFlutterPluginApple: NSObject, FlutterPlugin { breadcrumbInstance.data = data } - SentrySDK.addBreadcrumb(crumb: breadcrumbInstance) + SentrySDK.addBreadcrumb(breadcrumbInstance) result("") } diff --git a/flutter/ios/sentry_flutter.podspec b/flutter/ios/sentry_flutter.podspec index 857bc72165..8275b2b26a 100644 --- a/flutter/ios/sentry_flutter.podspec +++ b/flutter/ios/sentry_flutter.podspec @@ -12,11 +12,11 @@ Sentry SDK for Flutter with support to native through sentry-cocoa. :tag => s.version.to_s } s.source_files = 'Classes/**/*' s.public_header_files = 'Classes/**/*.h' - s.dependency 'Sentry/HybridSDK', '7.31.5' + s.dependency 'Sentry/HybridSDK', '8.0.0-rc.1' s.ios.dependency 'Flutter' s.osx.dependency 'FlutterMacOS' - s.ios.deployment_target = '9.0' - s.osx.deployment_target = '10.11' + s.ios.deployment_target = '11.0' + s.osx.deployment_target = '10.13' # Flutter.framework does not contain a i386 slice. Only x86_64 simulators are supported. s.ios.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'VALID_ARCHS[sdk=iphonesimulator*]' => 'x86_64' } diff --git a/flutter/lib/src/integrations/native_sdk_integration.dart b/flutter/lib/src/integrations/native_sdk_integration.dart index 091a4607db..2f19860e8e 100644 --- a/flutter/lib/src/integrations/native_sdk_integration.dart +++ b/flutter/lib/src/integrations/native_sdk_integration.dart @@ -40,10 +40,15 @@ class NativeSdkIntegration extends Integration { 'enableAutoNativeBreadcrumbs': options.enableAutoNativeBreadcrumbs, 'maxCacheItems': options.maxCacheItems, 'sendDefaultPii': options.sendDefaultPii, - 'enableOutOfMemoryTracking': options.enableOutOfMemoryTracking, + 'enableWatchdogTerminationTracking': + options.enableWatchdogTerminationTracking, 'enableNdkScopeSync': options.enableNdkScopeSync, - 'enableAutoPerformanceTracking': options.enableAutoPerformanceTracking, + 'enableAutoPerformanceTracing': options.enableAutoPerformanceTracing, 'sendClientReports': options.sendClientReports, + 'sdk': { + 'name': options.sdk.name, + 'version': options.sdk.version, + }, }); options.sdk.addIntegration('nativeSdkIntegration'); diff --git a/flutter/lib/src/sentry_flutter_options.dart b/flutter/lib/src/sentry_flutter_options.dart index cfe12a590e..4ead2e06c4 100644 --- a/flutter/lib/src/sentry_flutter_options.dart +++ b/flutter/lib/src/sentry_flutter_options.dart @@ -167,14 +167,14 @@ class SentryFlutterOptions extends SentryOptions { /// Enables Out of Memory Tracking for iOS and macCatalyst. /// See the following link for more information and possible restrictions: /// https://docs.sentry.io/platforms/apple/guides/ios/configuration/out-of-memory/ - bool enableOutOfMemoryTracking = true; + bool enableWatchdogTerminationTracking = true; /// Enable scope sync from Java to NDK. /// Only available on Android. bool enableNdkScopeSync = false; /// Enable auto performance tracking by default. - bool enableAutoPerformanceTracking = true; + bool enableAutoPerformanceTracing = true; /// Automatically track app start measurement and send it with the /// first transaction. Set to false when configuring option to disable or if diff --git a/flutter/test/integrations/init_native_sdk_integration_test.dart b/flutter/test/integrations/init_native_sdk_integration_test.dart index d33f845d9d..066f1c1168 100644 --- a/flutter/test/integrations/init_native_sdk_integration_test.dart +++ b/flutter/test/integrations/init_native_sdk_integration_test.dart @@ -43,7 +43,7 @@ void main() { 'dist': null, 'integrations': [], 'packages': [ - {'name': 'pub:sentry', 'version': sdkVersion} + {'name': 'pub:sentry_flutter', 'version': sdkVersion} ], 'diagnosticLevel': 'debug', 'maxBreadcrumbs': 100, @@ -52,10 +52,14 @@ void main() { 'enableAutoNativeBreadcrumbs': true, 'maxCacheItems': 30, 'sendDefaultPii': false, - 'enableOutOfMemoryTracking': true, + 'enableWatchdogTerminationTracking': true, 'enableNdkScopeSync': false, - 'enableAutoPerformanceTracking': true, - 'sendClientReports': true + 'enableAutoPerformanceTracing': true, + 'sendClientReports': true, + 'sdk': { + 'name': 'sentry.dart.flutter', + 'version': sdkVersion, + }, }); }); @@ -85,9 +89,9 @@ void main() { ..enableAutoNativeBreadcrumbs = false ..maxCacheItems = 0 ..sendDefaultPii = true - ..enableOutOfMemoryTracking = false + ..enableWatchdogTerminationTracking = false ..enableNdkScopeSync = true - ..enableAutoPerformanceTracking = false + ..enableAutoPerformanceTracing = false ..sendClientReports = false; options.sdk.addIntegration('foo'); @@ -111,7 +115,7 @@ void main() { 'dist': 'distfoo', 'integrations': ['foo'], 'packages': [ - {'name': 'pub:sentry', 'version': sdkVersion}, + {'name': 'pub:sentry_flutter', 'version': sdkVersion}, {'name': 'bar', 'version': '1'}, ], 'diagnosticLevel': 'error', @@ -121,10 +125,14 @@ void main() { 'enableAutoNativeBreadcrumbs': false, 'maxCacheItems': 0, 'sendDefaultPii': true, - 'enableOutOfMemoryTracking': false, + 'enableWatchdogTerminationTracking': false, 'enableNdkScopeSync': true, - 'enableAutoPerformanceTracking': false, - 'sendClientReports': false + 'enableAutoPerformanceTracing': false, + 'sendClientReports': false, + 'sdk': { + 'name': 'sentry.dart.flutter', + 'version': sdkVersion, + }, }); }); @@ -166,7 +174,16 @@ MethodChannel createChannelWithCallback( SentryFlutterOptions createOptions() { final mockPlatformChecker = MockPlatformChecker(hasNativeIntegration: true); - return SentryFlutterOptions(dsn: fakeDsn, checker: mockPlatformChecker); + final options = SentryFlutterOptions( + dsn: fakeDsn, + checker: mockPlatformChecker, + ); + options.sdk = SdkVersion( + name: sdkName, + version: sdkVersion, + ); + options.sdk.addPackage('pub:sentry_flutter', sdkVersion); + return options; } class Fixture { diff --git a/min_version_test/ios/Flutter/AppFrameworkInfo.plist b/min_version_test/ios/Flutter/AppFrameworkInfo.plist index 8d4492f977..9625e105df 100644 --- a/min_version_test/ios/Flutter/AppFrameworkInfo.plist +++ b/min_version_test/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 9.0 + 11.0 diff --git a/min_version_test/ios/Podfile b/min_version_test/ios/Podfile index 1e8c3c90a5..88359b225f 100644 --- a/min_version_test/ios/Podfile +++ b/min_version_test/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '9.0' +# platform :ios, '11.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/min_version_test/ios/Runner.xcodeproj/project.pbxproj b/min_version_test/ios/Runner.xcodeproj/project.pbxproj index 7976a46d5f..f2b7480c5c 100644 --- a/min_version_test/ios/Runner.xcodeproj/project.pbxproj +++ b/min_version_test/ios/Runner.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 13A0F5191DB9DB6B66C8C250 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C089B4B81AFAAF13419341DE /* Pods_Runner.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; @@ -31,6 +32,8 @@ /* Begin PBXFileReference section */ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 1558B8B9A4ADEA7A74B5E9C1 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + 1FBC1C088D658D829C9D1567 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; @@ -42,6 +45,8 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + BD6151F1C538CC02BD40FE83 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + C089B4B81AFAAF13419341DE /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -49,12 +54,32 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 13A0F5191DB9DB6B66C8C250 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 38B9E3123B057327CAC252D1 /* Pods */ = { + isa = PBXGroup; + children = ( + BD6151F1C538CC02BD40FE83 /* Pods-Runner.debug.xcconfig */, + 1FBC1C088D658D829C9D1567 /* Pods-Runner.release.xcconfig */, + 1558B8B9A4ADEA7A74B5E9C1 /* Pods-Runner.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; + 956B470068781843DB97CFE1 /* Frameworks */ = { + isa = PBXGroup; + children = ( + C089B4B81AFAAF13419341DE /* Pods_Runner.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -72,6 +97,8 @@ 9740EEB11CF90186004384FC /* Flutter */, 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, + 38B9E3123B057327CAC252D1 /* Pods */, + 956B470068781843DB97CFE1 /* Frameworks */, ); sourceTree = ""; }; @@ -105,12 +132,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( + BA3116A0F70DFE935732E053 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + 2D0725278E7A41672D920D2F /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -169,6 +198,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 2D0725278E7A41672D920D2F /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -197,6 +243,28 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; + BA3116A0F70DFE935732E053 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -272,7 +340,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -350,7 +418,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -399,7 +467,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/min_version_test/ios/Runner.xcworkspace/contents.xcworkspacedata b/min_version_test/ios/Runner.xcworkspace/contents.xcworkspacedata index 1d526a16ed..21a3cc14c7 100644 --- a/min_version_test/ios/Runner.xcworkspace/contents.xcworkspacedata +++ b/min_version_test/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -4,4 +4,7 @@ + +