From 4076d94ac575ac97474b82656ca18a505c44f6a2 Mon Sep 17 00:00:00 2001 From: Nick Cooke <36927374+ncooke3@users.noreply.github.com> Date: Tue, 15 Sep 2026 11:43:42 -0400 Subject: [PATCH] firebase13: bump minimum macOS to 11.0 and watchOS to 8.0 (#16551) --- .../Components/FIRCLSBinaryImage.m | 3 +++ Crashlytics/Shared/FIRCLSMachO/FIRCLSMachO.m | 6 +++++ Example/watchOSSample/Podfile | 4 +-- .../SampleWatchApp.xcodeproj/project.pbxproj | 12 ++++----- Firebase.podspec | 20 +++++++-------- FirebaseABTesting.podspec | 6 ++--- FirebaseAILogic.podspec | 2 +- FirebaseAnalytics.podspec | 2 +- FirebaseAppCheck.podspec | 4 +-- FirebaseAppCheckInterop.podspec | 4 +-- FirebaseAuth.podspec | 2 +- FirebaseAuthInterop.podspec | 2 +- FirebaseAuthTestingSupport.podspec | 2 +- FirebaseCombineSwift.podspec | 4 +-- FirebaseCore.podspec | 6 ++--- FirebaseCore/CHANGELOG.md | 8 ++++++ FirebaseCoreExtension.podspec | 2 +- FirebaseCoreInternal.podspec | 4 +-- FirebaseCrashlytics.podspec | 2 +- FirebaseDatabase.podspec | 4 +-- FirebaseFirestoreTestingSupport.podspec | 4 +-- FirebaseFunctions.podspec | 6 ++--- FirebaseInstallations.podspec | 8 +++--- FirebaseMessaging.podspec | 4 +-- FirebaseMessagingInterop.podspec | 2 +- FirebaseRemoteConfig.podspec | 2 +- FirebaseRemoteConfigInterop.podspec | 2 +- FirebaseSessions.podspec | 4 +-- FirebaseSharedSwift.podspec | 4 +-- FirebaseStorage.podspec | 4 +-- .../Sources/Internal/StorageUtils.swift | 25 ++----------------- GoogleAppMeasurement.podspec | 2 +- Package.swift | 2 +- scripts/build.sh | 17 +++++++------ scripts/test_catalyst.sh | 2 +- 35 files changed, 92 insertions(+), 95 deletions(-) diff --git a/Crashlytics/Crashlytics/Components/FIRCLSBinaryImage.m b/Crashlytics/Crashlytics/Components/FIRCLSBinaryImage.m index e929e381f8..d19beb84f4 100644 --- a/Crashlytics/Crashlytics/Components/FIRCLSBinaryImage.m +++ b/Crashlytics/Crashlytics/Components/FIRCLSBinaryImage.m @@ -258,6 +258,8 @@ static bool FIRCLSBinaryImageMachOSliceInitSectionByName(FIRCLSMachOSliceRef sli memset(section, 0, sizeof(FIRCLSMachOSection)); +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" if (FIRCLSMachOSliceIs64Bit(slice)) { const struct section_64* sect = getsectbynamefromheader_64(slice->startAddress, segName, sectionName); @@ -278,6 +280,7 @@ static bool FIRCLSBinaryImageMachOSliceInitSectionByName(FIRCLSMachOSliceRef sli section->size = sect->size; section->offset = sect->offset; } +#pragma clang diagnostic pop return true; } diff --git a/Crashlytics/Shared/FIRCLSMachO/FIRCLSMachO.m b/Crashlytics/Shared/FIRCLSMachO/FIRCLSMachO.m index 477541c784..c6cdde3247 100644 --- a/Crashlytics/Shared/FIRCLSMachO/FIRCLSMachO.m +++ b/Crashlytics/Shared/FIRCLSMachO/FIRCLSMachO.m @@ -273,6 +273,8 @@ struct FIRCLSMachOSlice FIRCLSMachOSliceGetCurrent(void) { Dl_info dlinfo; #if !CLS_TARGET_OS_VISION +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" const NXArchInfo* archInfo; archInfo = NXGetLocalArchInfo(); @@ -280,6 +282,7 @@ struct FIRCLSMachOSlice FIRCLSMachOSliceGetCurrent(void) { slice.cputype = archInfo->cputype; slice.cpusubtype = archInfo->cpusubtype; } +#pragma clang diagnostic pop #else cpu_type_t cputype; cpu_subtype_t cpusubtype; @@ -348,6 +351,8 @@ const char* FIRCLSMachOSliceGetArchitectureName(FIRCLSMachOSliceRef slice) { } #if !CLS_TARGET_OS_VISION +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" const NXArchInfo* archInfo; archInfo = NXGetArchInfoFromCpuType(slice->cputype, slice->cpusubtype); @@ -356,6 +361,7 @@ const char* FIRCLSMachOSliceGetArchitectureName(FIRCLSMachOSliceRef slice) { } return archInfo->name; +#pragma clang diagnostic pop #else const char* archname = macho_arch_name_for_mach_header(slice->startAddress); diff --git a/Example/watchOSSample/Podfile b/Example/watchOSSample/Podfile index 2f86270859..87d13816ab 100644 --- a/Example/watchOSSample/Podfile +++ b/Example/watchOSSample/Podfile @@ -5,7 +5,7 @@ source 'https://cdn.cocoapods.org/' use_frameworks! target 'SampleWatchAppWatchKitExtension' do - platform :watchos, '7.0' + platform :watchos, '8.0' pod 'FirebaseCore', :path => '../../' pod 'FirebaseCoreInternal', :path => '../../' @@ -30,6 +30,6 @@ target 'SampleWatchAppWatchKitExtension' do end target 'ServiceExtension' do - platform :watchos, '7.0' + platform :watchos, '8.0' pod 'FirebaseMessaging', :path => '../../' end diff --git a/Example/watchOSSample/SampleWatchApp.xcodeproj/project.pbxproj b/Example/watchOSSample/SampleWatchApp.xcodeproj/project.pbxproj index f47ea465b0..c653073491 100644 --- a/Example/watchOSSample/SampleWatchApp.xcodeproj/project.pbxproj +++ b/Example/watchOSSample/SampleWatchApp.xcodeproj/project.pbxproj @@ -627,7 +627,7 @@ SKIP_INSTALL = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 4; - WATCHOS_DEPLOYMENT_TARGET = 7.0; + WATCHOS_DEPLOYMENT_TARGET = 8.0; }; name = Debug; }; @@ -653,7 +653,7 @@ SKIP_INSTALL = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 4; - WATCHOS_DEPLOYMENT_TARGET = 7.0; + WATCHOS_DEPLOYMENT_TARGET = 8.0; }; name = Release; }; @@ -674,7 +674,7 @@ SKIP_INSTALL = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 4; - WATCHOS_DEPLOYMENT_TARGET = 7.0; + WATCHOS_DEPLOYMENT_TARGET = 8.0; }; name = Debug; }; @@ -695,7 +695,7 @@ SKIP_INSTALL = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 4; - WATCHOS_DEPLOYMENT_TARGET = 7.0; + WATCHOS_DEPLOYMENT_TARGET = 8.0; }; name = Release; }; @@ -750,7 +750,7 @@ SKIP_INSTALL = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 4; - WATCHOS_DEPLOYMENT_TARGET = 7.0; + WATCHOS_DEPLOYMENT_TARGET = 8.0; }; name = Debug; }; @@ -775,7 +775,7 @@ SKIP_INSTALL = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 4; - WATCHOS_DEPLOYMENT_TARGET = 7.0; + WATCHOS_DEPLOYMENT_TARGET = 8.0; }; name = Release; }; diff --git a/Firebase.podspec b/Firebase.podspec index 9da200362e..bc0e1403d9 100644 --- a/Firebase.podspec +++ b/Firebase.podspec @@ -58,7 +58,7 @@ Simplify your app development, grow your user base, and monetize more effectivel ss.ios.deployment_target = '15.0' ss.osx.deployment_target = '11.0' ss.tvos.deployment_target = '15.0' - ss.watchos.deployment_target = '7.0' + ss.watchos.deployment_target = '8.0' end s.subspec 'Analytics' do |ss| @@ -75,7 +75,7 @@ Simplify your app development, grow your user base, and monetize more effectivel ss.ios.deployment_target = '15.0' ss.osx.deployment_target = '11.0' ss.tvos.deployment_target = '15.0' - ss.watchos.deployment_target = '7.0' + ss.watchos.deployment_target = '8.0' end s.subspec 'AppDistribution' do |ss| @@ -90,7 +90,7 @@ Simplify your app development, grow your user base, and monetize more effectivel ss.ios.deployment_target = '15.0' ss.osx.deployment_target = '11.0' ss.tvos.deployment_target = '15.0' - ss.watchos.deployment_target = '7.0' + ss.watchos.deployment_target = '8.0' end s.subspec 'Auth' do |ss| @@ -100,7 +100,7 @@ Simplify your app development, grow your user base, and monetize more effectivel ss.ios.deployment_target = '15.0' ss.osx.deployment_target = '11.0' ss.tvos.deployment_target = '15.0' - ss.watchos.deployment_target = '7.0' + ss.watchos.deployment_target = '8.0' end s.subspec 'Crashlytics' do |ss| @@ -110,7 +110,7 @@ Simplify your app development, grow your user base, and monetize more effectivel ss.ios.deployment_target = '15.0' ss.osx.deployment_target = '11.0' ss.tvos.deployment_target = '15.0' - ss.watchos.deployment_target = '7.0' + ss.watchos.deployment_target = '8.0' end s.subspec 'Database' do |ss| @@ -120,7 +120,7 @@ Simplify your app development, grow your user base, and monetize more effectivel ss.ios.deployment_target = '15.0' ss.osx.deployment_target = '11.0' ss.tvos.deployment_target = '15.0' - ss.watchos.deployment_target = '7.0' + ss.watchos.deployment_target = '8.0' end s.subspec 'Firestore' do |ss| @@ -138,7 +138,7 @@ Simplify your app development, grow your user base, and monetize more effectivel ss.ios.deployment_target = '15.0' ss.osx.deployment_target = '11.0' ss.tvos.deployment_target = '15.0' - ss.watchos.deployment_target = '7.0' + ss.watchos.deployment_target = '8.0' end s.subspec 'InAppMessaging' do |ss| @@ -161,7 +161,7 @@ Simplify your app development, grow your user base, and monetize more effectivel ss.ios.deployment_target = '15.0' ss.osx.deployment_target = '11.0' ss.tvos.deployment_target = '15.0' - ss.watchos.deployment_target = '7.0' + ss.watchos.deployment_target = '8.0' end s.subspec 'Performance' do |ss| @@ -179,7 +179,7 @@ Simplify your app development, grow your user base, and monetize more effectivel ss.ios.deployment_target = '15.0' ss.osx.deployment_target = '11.0' ss.tvos.deployment_target = '15.0' - ss.watchos.deployment_target = '7.0' + ss.watchos.deployment_target = '8.0' end s.subspec 'Storage' do |ss| @@ -189,7 +189,7 @@ Simplify your app development, grow your user base, and monetize more effectivel ss.ios.deployment_target = '15.0' ss.osx.deployment_target = '11.0' ss.tvos.deployment_target = '15.0' - ss.watchos.deployment_target = '7.0' + ss.watchos.deployment_target = '8.0' end end diff --git a/FirebaseABTesting.podspec b/FirebaseABTesting.podspec index d224f358e3..91ad25e6a2 100644 --- a/FirebaseABTesting.podspec +++ b/FirebaseABTesting.podspec @@ -23,9 +23,9 @@ Firebase Cloud Messaging and Firebase Remote Config in your app. s.social_media_url = 'https://twitter.com/Firebase' ios_deployment_target = '15.0' - osx_deployment_target = '10.15' + osx_deployment_target = '11.0' tvos_deployment_target = '15.0' - watchos_deployment_target = '7.0' + watchos_deployment_target = '8.0' s.ios.deployment_target = ios_deployment_target s.osx.deployment_target = osx_deployment_target @@ -57,7 +57,7 @@ Firebase Cloud Messaging and Firebase Remote Config in your app. unit_tests.scheme = { :code_coverage => true } unit_tests.platforms = { :ios => ios_deployment_target, - :osx => '10.15', + :osx => osx_deployment_target, :tvos => tvos_deployment_target } unit_tests.source_files = 'FirebaseABTesting/Tests/Unit/**/*.[mh]' diff --git a/FirebaseAILogic.podspec b/FirebaseAILogic.podspec index ee4fe6c60c..44e8add39b 100644 --- a/FirebaseAILogic.podspec +++ b/FirebaseAILogic.podspec @@ -21,7 +21,7 @@ Build AI-powered apps and features with the Gemini API using the Firebase AI Log ios_deployment_target = '15.0' osx_deployment_target = '11.0' tvos_deployment_target = '15.0' - watchos_deployment_target = '7.0' + watchos_deployment_target = '8.0' s.ios.deployment_target = ios_deployment_target s.osx.deployment_target = osx_deployment_target diff --git a/FirebaseAnalytics.podspec b/FirebaseAnalytics.podspec index f2b898213b..dbf2da1d6a 100644 --- a/FirebaseAnalytics.podspec +++ b/FirebaseAnalytics.podspec @@ -20,7 +20,7 @@ Pod::Spec.new do |s| s.swift_version = '5.9' s.ios.deployment_target = '15.0' - s.osx.deployment_target = '10.15' + s.osx.deployment_target = '11.0' s.tvos.deployment_target = '15.0' s.libraries = 'c++', 'sqlite3', 'z' diff --git a/FirebaseAppCheck.podspec b/FirebaseAppCheck.podspec index 67a158b219..85f7a2a94b 100644 --- a/FirebaseAppCheck.podspec +++ b/FirebaseAppCheck.podspec @@ -18,9 +18,9 @@ Pod::Spec.new do |s| s.social_media_url = 'https://twitter.com/Firebase' ios_deployment_target = '15.0' - osx_deployment_target = '10.15' + osx_deployment_target = '11.0' tvos_deployment_target = '15.0' - watchos_deployment_target = '7.0' + watchos_deployment_target = '8.0' s.swift_version = '5.9' diff --git a/FirebaseAppCheckInterop.podspec b/FirebaseAppCheckInterop.podspec index d5cb684b84..42e89846bd 100644 --- a/FirebaseAppCheckInterop.podspec +++ b/FirebaseAppCheckInterop.podspec @@ -22,9 +22,9 @@ Pod::Spec.new do |s| s.social_media_url = 'https://twitter.com/Firebase' ios_deployment_target = '15.0' - osx_deployment_target = '10.15' + osx_deployment_target = '11.0' tvos_deployment_target = '15.0' - watchos_deployment_target = '7.0' + watchos_deployment_target = '8.0' s.ios.deployment_target = ios_deployment_target s.osx.deployment_target = osx_deployment_target diff --git a/FirebaseAuth.podspec b/FirebaseAuth.podspec index aaf8b50c1d..5f3bf754de 100644 --- a/FirebaseAuth.podspec +++ b/FirebaseAuth.podspec @@ -22,7 +22,7 @@ supports email and password accounts, as well as several 3rd party authenticatio ios_deployment_target = '15.0' osx_deployment_target = '11.0' tvos_deployment_target = '15.0' - watchos_deployment_target = '7.0' + watchos_deployment_target = '8.0' s.swift_version = '5.9' diff --git a/FirebaseAuthInterop.podspec b/FirebaseAuthInterop.podspec index 2798a7a4de..e2200e8169 100644 --- a/FirebaseAuthInterop.podspec +++ b/FirebaseAuthInterop.podspec @@ -23,7 +23,7 @@ Pod::Spec.new do |s| s.ios.deployment_target = '15.0' s.osx.deployment_target = '11.0' s.tvos.deployment_target = '15.0' - s.watchos.deployment_target = '7.0' + s.watchos.deployment_target = '8.0' s.source_files = 'FirebaseAuth/Interop/**/*.[hm]' s.public_header_files = 'FirebaseAuth/Interop/Public/FirebaseAuthInterop/*.h' diff --git a/FirebaseAuthTestingSupport.podspec b/FirebaseAuthTestingSupport.podspec index db01b10002..64feafb7a7 100644 --- a/FirebaseAuthTestingSupport.podspec +++ b/FirebaseAuthTestingSupport.podspec @@ -20,7 +20,7 @@ Pod::Spec.new do |s| ios_deployment_target = '15.0' osx_deployment_target = '11.0' tvos_deployment_target = '15.0' - watchos_deployment_target = '7.0' + watchos_deployment_target = '8.0' s.swift_version = '5.9' diff --git a/FirebaseCombineSwift.podspec b/FirebaseCombineSwift.podspec index 219c0f7f60..b5c997c455 100644 --- a/FirebaseCombineSwift.podspec +++ b/FirebaseCombineSwift.podspec @@ -22,9 +22,9 @@ for internal testing only. It should not be published. s.swift_version = '5.9' ios_deployment_target = '15.0' - osx_deployment_target = '10.15' + osx_deployment_target = '11.0' tvos_deployment_target = '15.0' - watchos_deployment_target = '7.0' + watchos_deployment_target = '8.0' s.ios.deployment_target = ios_deployment_target s.osx.deployment_target = osx_deployment_target diff --git a/FirebaseCore.podspec b/FirebaseCore.podspec index 7686d257c1..2f1b892553 100644 --- a/FirebaseCore.podspec +++ b/FirebaseCore.podspec @@ -26,9 +26,9 @@ Firebase Core includes FIRApp and FIROptions which provide central configuration s.social_media_url = 'https://twitter.com/Firebase' ios_deployment_target = '15.0' - osx_deployment_target = '10.15' + osx_deployment_target = '11.0' tvos_deployment_target = '15.0' - watchos_deployment_target = '7.0' + watchos_deployment_target = '8.0' s.ios.deployment_target = ios_deployment_target s.osx.deployment_target = osx_deployment_target @@ -73,7 +73,7 @@ Firebase Core includes FIRApp and FIROptions which provide central configuration unit_tests.scheme = { :code_coverage => true } unit_tests.platforms = { :ios => ios_deployment_target, - :osx => '10.15', + :osx => osx_deployment_target, :tvos => tvos_deployment_target } unit_tests.source_files = [ diff --git a/FirebaseCore/CHANGELOG.md b/FirebaseCore/CHANGELOG.md index 744aa0b696..8bfc994b4f 100644 --- a/FirebaseCore/CHANGELOG.md +++ b/FirebaseCore/CHANGELOG.md @@ -1,4 +1,12 @@ # Unreleased +- [changed] **Breaking change**: Firebase's minimum supported versions have + updated for the following platforms: + - | Platform | Firebase 13 | + | ------------- | ------------- | + | iOS | 15.0 | + | tvOS | 15.0 | + | macOS | **11.0** | + | watchOS | **8.0** | - [removed] Firebase is no longer distributed via CocoaPods. Firebase 13.0.0 and future releases are distributed exclusively via Swift Package Manager and binary distributions. Existing CocoaPods releases will remain diff --git a/FirebaseCoreExtension.podspec b/FirebaseCoreExtension.podspec index 50fa0c9455..71f5895b47 100644 --- a/FirebaseCoreExtension.podspec +++ b/FirebaseCoreExtension.podspec @@ -25,7 +25,7 @@ Pod::Spec.new do |s| s.ios.deployment_target = '15.0' s.osx.deployment_target = '11.0' s.tvos.deployment_target = '15.0' - s.watchos.deployment_target = '7.0' + s.watchos.deployment_target = '8.0' s.source_files = 'FirebaseCore/Extension/*.[hm]' s.public_header_files = 'FirebaseCore/Extension/*.h' diff --git a/FirebaseCoreInternal.podspec b/FirebaseCoreInternal.podspec index 7a404a3cda..9397f95262 100644 --- a/FirebaseCoreInternal.podspec +++ b/FirebaseCoreInternal.podspec @@ -19,9 +19,9 @@ Pod::Spec.new do |s| s.social_media_url = 'https://twitter.com/Firebase' ios_deployment_target = '15.0' - osx_deployment_target = '10.15' + osx_deployment_target = '11.0' tvos_deployment_target = '15.0' - watchos_deployment_target = '7.0' + watchos_deployment_target = '8.0' s.ios.deployment_target = ios_deployment_target s.osx.deployment_target = osx_deployment_target diff --git a/FirebaseCrashlytics.podspec b/FirebaseCrashlytics.podspec index 9189e3ba33..2d6ded3ef1 100644 --- a/FirebaseCrashlytics.podspec +++ b/FirebaseCrashlytics.podspec @@ -14,7 +14,7 @@ Pod::Spec.new do |s| ios_deployment_target = '15.0' osx_deployment_target = '11.0' tvos_deployment_target = '15.0' - watchos_deployment_target = '7.0' + watchos_deployment_target = '8.0' s.swift_version = '5.9' diff --git a/FirebaseDatabase.podspec b/FirebaseDatabase.podspec index 9b51efa708..0167dfee37 100644 --- a/FirebaseDatabase.podspec +++ b/FirebaseDatabase.podspec @@ -18,9 +18,9 @@ Simplify your iOS development, grow your user base, and monetize more effectivel s.social_media_url = 'https://twitter.com/Firebase' ios_deployment_target = '15.0' - osx_deployment_target = '10.15' + osx_deployment_target = '11.0' tvos_deployment_target = '15.0' - watchos_deployment_target = '7.0' + watchos_deployment_target = '8.0' s.swift_version = '5.9' diff --git a/FirebaseFirestoreTestingSupport.podspec b/FirebaseFirestoreTestingSupport.podspec index 446e5f8a72..60c4b7b7ba 100644 --- a/FirebaseFirestoreTestingSupport.podspec +++ b/FirebaseFirestoreTestingSupport.podspec @@ -18,9 +18,9 @@ Pod::Spec.new do |s| } ios_deployment_target = '15.0' - osx_deployment_target = '10.15' + osx_deployment_target = '11.0' tvos_deployment_target = '15.0' - watchos_deployment_target = '7.0' + watchos_deployment_target = '8.0' s.swift_version = '5.9' diff --git a/FirebaseFunctions.podspec b/FirebaseFunctions.podspec index d9f206d8bc..eec1be6caa 100644 --- a/FirebaseFunctions.podspec +++ b/FirebaseFunctions.podspec @@ -19,9 +19,9 @@ Cloud Functions for Firebase. s.swift_version = '5.9' ios_deployment_target = '15.0' - osx_deployment_target = '10.15' + osx_deployment_target = '11.0' tvos_deployment_target = '15.0' - watchos_deployment_target = '7.0' + watchos_deployment_target = '8.0' s.ios.deployment_target = ios_deployment_target s.osx.deployment_target = osx_deployment_target @@ -46,7 +46,7 @@ Cloud Functions for Firebase. s.test_spec 'objc' do |objc_tests| objc_tests.platforms = { :ios => ios_deployment_target, - :osx => '10.15', + :osx => osx_deployment_target, :tvos => tvos_deployment_target } objc_tests.source_files = [ diff --git a/FirebaseInstallations.podspec b/FirebaseInstallations.podspec index 561500cf06..8e452d1045 100644 --- a/FirebaseInstallations.podspec +++ b/FirebaseInstallations.podspec @@ -18,9 +18,9 @@ Pod::Spec.new do |s| s.social_media_url = 'https://twitter.com/Firebase' ios_deployment_target = '15.0' - osx_deployment_target = '10.15' + osx_deployment_target = '11.0' tvos_deployment_target = '15.0' - watchos_deployment_target = '7.0' + watchos_deployment_target = '8.0' s.swift_version = '5.9' @@ -61,7 +61,7 @@ Pod::Spec.new do |s| unit_tests.scheme = { :code_coverage => true } unit_tests.platforms = { :ios => ios_deployment_target, - :osx => '10.15', + :osx => osx_deployment_target, :tvos => tvos_deployment_target } unit_tests.source_files = base_dir + 'Tests/Unit/*.[mh]', @@ -78,7 +78,7 @@ Pod::Spec.new do |s| s.test_spec 'integration' do |int_tests| int_tests.scheme = { :code_coverage => true } - int_tests.platforms = {:ios => '10.0', :osx => '10.15', :tvos => '11.0'} + int_tests.platforms = {:ios => ios_deployment_target, :osx => osx_deployment_target, :tvos => tvos_deployment_target} int_tests.source_files = base_dir + 'Tests/Integration/**/*.[mh]' int_tests.resources = base_dir + 'Tests/Resources/**/*' if ENV['FIS_INTEGRATION_TESTS_REQUIRED'] && ENV['FIS_INTEGRATION_TESTS_REQUIRED'] == '1' then diff --git a/FirebaseMessaging.podspec b/FirebaseMessaging.podspec index 88d29a890a..d34842436c 100644 --- a/FirebaseMessaging.podspec +++ b/FirebaseMessaging.podspec @@ -21,9 +21,9 @@ device, and it is completely free. s.social_media_url = 'https://twitter.com/Firebase' ios_deployment_target = '15.0' - osx_deployment_target = '10.15' + osx_deployment_target = '11.0' tvos_deployment_target = '15.0' - watchos_deployment_target = '7.0' + watchos_deployment_target = '8.0' s.swift_version = '5.9' diff --git a/FirebaseMessagingInterop.podspec b/FirebaseMessagingInterop.podspec index 463f6120f5..8aff1393f7 100644 --- a/FirebaseMessagingInterop.podspec +++ b/FirebaseMessagingInterop.podspec @@ -23,7 +23,7 @@ Pod::Spec.new do |s| s.ios.deployment_target = '15.0' s.osx.deployment_target = '11.0' s.tvos.deployment_target = '15.0' - s.watchos.deployment_target = '7.0' + s.watchos.deployment_target = '8.0' s.source_files = 'FirebaseMessaging/Interop/*.[hm]' s.public_header_files = 'FirebaseMessaging/Interop/*.h' diff --git a/FirebaseRemoteConfig.podspec b/FirebaseRemoteConfig.podspec index db7bc15261..32312105eb 100644 --- a/FirebaseRemoteConfig.podspec +++ b/FirebaseRemoteConfig.podspec @@ -21,7 +21,7 @@ app update. ios_deployment_target = '15.0' osx_deployment_target = '11.0' tvos_deployment_target = '15.0' - watchos_deployment_target = '7.0' + watchos_deployment_target = '8.0' s.swift_version = '5.9' diff --git a/FirebaseRemoteConfigInterop.podspec b/FirebaseRemoteConfigInterop.podspec index 6bb38f4340..0de5b2111e 100644 --- a/FirebaseRemoteConfigInterop.podspec +++ b/FirebaseRemoteConfigInterop.podspec @@ -30,7 +30,7 @@ Pod::Spec.new do |s| s.ios.deployment_target = '15.0' s.osx.deployment_target = '11.0' s.tvos.deployment_target = '15.0' - s.watchos.deployment_target = '7.0' + s.watchos.deployment_target = '8.0' s.source_files = 'FirebaseRemoteConfig/Interop/*.swift' end diff --git a/FirebaseSessions.podspec b/FirebaseSessions.podspec index 29bf447e6a..5125d98221 100644 --- a/FirebaseSessions.podspec +++ b/FirebaseSessions.podspec @@ -19,9 +19,9 @@ Pod::Spec.new do |s| s.social_media_url = 'https://twitter.com/Firebase' ios_deployment_target = '15.0' - osx_deployment_target = '10.15' + osx_deployment_target = '11.0' tvos_deployment_target = '15.0' - watchos_deployment_target = '7.0' + watchos_deployment_target = '8.0' s.swift_version = '5.9' diff --git a/FirebaseSharedSwift.podspec b/FirebaseSharedSwift.podspec index 3acb7e3835..ea7a4622a2 100644 --- a/FirebaseSharedSwift.podspec +++ b/FirebaseSharedSwift.podspec @@ -21,9 +21,9 @@ Firebase products. FirebaseSharedSwift is not supported for non-Firebase usage. s.swift_version = '5.9' ios_deployment_target = '15.0' - osx_deployment_target = '10.15' + osx_deployment_target = '11.0' tvos_deployment_target = '15.0' - watchos_deployment_target = '7.0' + watchos_deployment_target = '8.0' s.ios.deployment_target = ios_deployment_target s.osx.deployment_target = osx_deployment_target diff --git a/FirebaseStorage.podspec b/FirebaseStorage.podspec index 83b4a108c4..87b36c4b5e 100644 --- a/FirebaseStorage.podspec +++ b/FirebaseStorage.podspec @@ -18,9 +18,9 @@ Firebase Storage provides robust, secure file uploads and downloads from Firebas s.social_media_url = 'https://twitter.com/Firebase' ios_deployment_target = '15.0' - osx_deployment_target = '10.15' + osx_deployment_target = '11.0' tvos_deployment_target = '15.0' - watchos_deployment_target = '7.0' + watchos_deployment_target = '8.0' s.ios.deployment_target = ios_deployment_target s.osx.deployment_target = osx_deployment_target diff --git a/FirebaseStorage/Sources/Internal/StorageUtils.swift b/FirebaseStorage/Sources/Internal/StorageUtils.swift index 06ae75e83c..eb67a19257 100644 --- a/FirebaseStorage/Sources/Internal/StorageUtils.swift +++ b/FirebaseStorage/Sources/Internal/StorageUtils.swift @@ -15,12 +15,6 @@ import Foundation private import UniformTypeIdentifiers -#if os(iOS) || os(tvOS) || os(visionOS) - import MobileCoreServices -#elseif os(macOS) || os(watchOS) - import CoreServices -#endif // os(iOS) || os(tvOS) - class StorageUtils { class func defaultRequestForReference(reference: StorageReference, queryParams: [String: String]? = nil) @@ -76,24 +70,9 @@ class StorageUtils { guard let fileExtension else { return "application/octet-stream" } - // TODO: Remove `else` when min. supported macOS is 11.0+. - if #available(macOS 11.0, *) { - guard let mimeType = UTType(filenameExtension: fileExtension)?.preferredMIMEType else { - return "application/octet-stream" - } - return mimeType - } else { - if let type = UTTypeCreatePreferredIdentifierForTag( - kUTTagClassFilenameExtension, - fileExtension as NSString, - nil - )?.takeRetainedValue() { - if let mimeType = UTTypeCopyPreferredTagWithClass(type, kUTTagClassMIMEType)? - .takeRetainedValue() { - return mimeType as String - } - } + guard let mimeType = UTType(filenameExtension: fileExtension)?.preferredMIMEType else { return "application/octet-stream" } + return mimeType } } diff --git a/GoogleAppMeasurement.podspec b/GoogleAppMeasurement.podspec index 1cd249d740..d55f7b1465 100644 --- a/GoogleAppMeasurement.podspec +++ b/GoogleAppMeasurement.podspec @@ -22,7 +22,7 @@ Pod::Spec.new do |s| s.cocoapods_version = '>= 1.12.0' s.ios.deployment_target = '15.0' - s.osx.deployment_target = '10.15' + s.osx.deployment_target = '11.0' s.tvos.deployment_target = '15.0' s.libraries = 'c++', 'sqlite3', 'z' diff --git a/Package.swift b/Package.swift index 6192ac6e11..95dda40f5f 100644 --- a/Package.swift +++ b/Package.swift @@ -24,7 +24,7 @@ let shouldUseSourceFirestore = Context.environment["FIREBASE_SOURCE_FIRESTORE"] let package = Package( name: "Firebase", - platforms: [.iOS(.v15), .macCatalyst(.v15), .macOS(.v11), .tvOS(.v15), .watchOS(.v7)], + platforms: [.iOS(.v15), .macCatalyst(.v15), .macOS(.v11), .tvOS(.v15), .watchOS(.v8)], products: packageProducts(), dependencies: packageDependencies(), targets: packageTargets(), diff --git a/scripts/build.sh b/scripts/build.sh index 32d154b762..c61d08bf9d 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -106,13 +106,14 @@ case "$system" in esac # Source function to check if CI secrets are available. +# shellcheck disable=SC1091 source scripts/check_secrets.sh # Runs xcodebuild with the given flags, piping output to xcbeautify # If xcodebuild fails with known error codes, retries once. function RunXcodebuild() { # Print the command in a copy-pasteable format - echo xcodebuild $(printf "%q " "$@") + echo xcodebuild "$(printf "%q " "$@")" if [[ -n "${DRY_RUN:-}" ]]; then echo "DRY_RUN is set. Exiting before build." @@ -188,8 +189,8 @@ if [[ "$xcode_major" -ge 27 ]]; then spm_macosx_deployment_target="12.0" spm_watchos_deployment_target="9.0" else - spm_macosx_deployment_target="10.15" - spm_watchos_deployment_target="7.0" + spm_macosx_deployment_target="11.0" + spm_watchos_deployment_target="8.0" fi ios_device_flags=( @@ -780,7 +781,7 @@ case "$product-$platform-$method" in FirebaseDataConnect-*-spm) RunXcodebuild \ - -scheme $product \ + -scheme "$product" \ "${xcb_flags[@]}" \ IPHONEOS_DEPLOYMENT_TARGET=15.0 \ TVOS_DEPLOYMENT_TARGET=15.0 \ @@ -789,7 +790,7 @@ case "$product-$platform-$method" in *-*-spm) RunXcodebuild \ - -scheme $product \ + -scheme "$product" \ "${xcb_flags[@]}" \ IPHONEOS_DEPLOYMENT_TARGET=15.0 \ MACOSX_DEPLOYMENT_TARGET="$spm_macosx_deployment_target" \ @@ -800,7 +801,7 @@ case "$product-$platform-$method" in *-*-spmbuildonly) RunXcodebuild \ - -scheme $product \ + -scheme "$product" \ "${xcb_flags[@]}" \ build ;; @@ -808,7 +809,7 @@ case "$product-$platform-$method" in ClientApp-iOS-xcodebuild | ClientApp-iOS13-iOS-xcodebuild) RunXcodebuild \ -project 'IntegrationTesting/ClientApp/ClientApp.xcodeproj' \ - -scheme $product \ + -scheme "$product" \ "${xcb_flags[@]}" \ build ;; @@ -816,7 +817,7 @@ case "$product-$platform-$method" in ClientApp-CocoaPods*-iOS-xcodebuild) RunXcodebuild \ -workspace 'IntegrationTesting/ClientApp/ClientApp.xcworkspace' \ - -scheme $product \ + -scheme "$product" \ "${xcb_flags[@]}" \ build ;; diff --git a/scripts/test_catalyst.sh b/scripts/test_catalyst.sh index f327e3e7c4..8fe6e463f4 100755 --- a/scripts/test_catalyst.sh +++ b/scripts/test_catalyst.sh @@ -59,7 +59,7 @@ args=( # Disable signing. "CODE_SIGN_IDENTITY=-" "CODE_SIGNING_REQUIRED=NO" "CODE_SIGNING_ALLOWED=NO" # GHA is still running 10.15. - "MACOSX_DEPLOYMENT_TARGET=10.15" + "MACOSX_DEPLOYMENT_TARGET=11.0" "-resultBundlePath" "xcresults/$scheme-${timestamp}.xcresult" )