diff --git a/Carthage.md b/Carthage.md index f1392d1e8f..1d2d355e19 100644 --- a/Carthage.md +++ b/Carthage.md @@ -49,8 +49,6 @@ binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseFunctionsBinary.j binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseGoogleSignInBinary.json" binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseInAppMessagingBinary.json" binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseMessagingBinary.json" -binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseMLModelInterpreterBinary.json" -binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseMLVisionBinary.json" binary "https://dl.google.com/dl/firebase/ios/carthage/FirebasePerformanceBinary.json" binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseProtobufBinary.json" binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseRemoteConfigBinary.json" diff --git a/Firebase.podspec b/Firebase.podspec index 9d129a812a..42c22500f8 100644 --- a/Firebase.podspec +++ b/Firebase.podspec @@ -138,6 +138,11 @@ Simplify your app development, grow your user base, and monetize more effectivel ss.watchos.deployment_target = '6.0' end + s.subspec 'MLModelDownloader' do |ss| + ss.dependency 'Firebase/CoreOnly' + ss.ios.dependency 'FirebaseMLModelDownloader', '~> 7.6.0-beta' + end + s.subspec 'Performance' do |ss| ss.dependency 'Firebase/CoreOnly' ss.ios.dependency 'FirebasePerformance', '~> 7.6.0' @@ -158,6 +163,8 @@ Simplify your app development, grow your user base, and monetize more effectivel ss.watchos.deployment_target = '6.0' end + # The deprecated ML subspecs should be deleted in Firebase 8.0.0. + s.subspec 'MLCommon' do |ss| ss.dependency 'Firebase/CoreOnly' ss.ios.dependency 'FirebaseMLCommon', '~> 7.6.0-beta' diff --git a/FirebaseCore/CHANGELOG.md b/FirebaseCore/CHANGELOG.md index 6996c96c95..ac099f488f 100644 --- a/FirebaseCore/CHANGELOG.md +++ b/FirebaseCore/CHANGELOG.md @@ -1,3 +1,7 @@ +# FirebaseCore 7.7.0 +- [changed] Deprecated FirebaseMLModelInterpreter and FirebaseMLVision. +- [added] Introduced FirebaseMLModelDownloader. + # FirebaseCore 7.6.0 - [fixed] Fixed build warnings introduced with Xcode 12.5. (#7431) diff --git a/FirebaseMLCommon.podspec.json b/FirebaseMLCommon.podspec.json deleted file mode 100644 index dfc5a646e5..0000000000 --- a/FirebaseMLCommon.podspec.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "authors": "Google, Inc.", - "dependencies": { - "FirebaseCore": "~> 7.0", - "FirebaseInstallations": "~> 7.0", - "GTMSessionFetcher/Core": "~> 1.1", - "GoogleToolboxForMac/Logger": "~> 2.1", - "GoogleToolboxForMac/NSData+zlib": "~> 2.1", - "GoogleToolboxForMac/NSDictionary+URLArguments": "~> 2.1", - "GoogleUtilities/UserDefaults": "~> 7.0", - "Protobuf": "~> 3.12" - }, - "description": "This is an INTERNAL ONLY pod containing common elements for all the Firebase ML Kit pods.", - "frameworks": [ - "Foundation", - "LocalAuthentication" - ], - "homepage": "https://firebase.google.com/docs/ml-kit/", - "libraries": [ - "c++", - "sqlite3", - "z" - ], - "license": { - "text": "Copyright 2020 Google", - "type": "Copyright" - }, - "name": "FirebaseMLCommon", - "platforms": { - "ios": "10.0" - }, - "preserve_paths": [ - "CHANGELOG.md", - "README.md" - ], - "source": { - "http": "https://dl.google.com/dl/cpdc/a87f6cd702e135fb/FirebaseMLCommon-0.21.0.tar.gz" - }, - "summary": "Firebase ML Kit Common SDK for iOS", - "vendored_frameworks": [ - "Frameworks/FirebaseMLCommon.framework" - ], - "version": "7.6.0-beta" -} diff --git a/FirebaseMLModelDownloader.podspec b/FirebaseMLModelDownloader.podspec index 22ec57bef1..67423dd7ed 100644 --- a/FirebaseMLModelDownloader.podspec +++ b/FirebaseMLModelDownloader.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'FirebaseMLModelDownloader' - s.version = '7.0.0' + s.version = '7.6.0-beta' s.summary = 'Firebase ML Model Downloader' s.description = <<-DESC @@ -13,14 +13,20 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/firebase/firebase-ios-sdk.git', - :tag => 'MLModelDownloader-' + s.version.to_s + :tag => 'CocoaPods-' + s.version.to_s } s.social_media_url = 'https://twitter.com/Firebase' s.swift_version = '5.0' - s.ios.deployment_target = '10.0' - s.osx.deployment_target = '10.12' - s.tvos.deployment_target = '10.0' - s.watchos.deployment_target = '6.0' + + ios_deployment_target = '10.0' + osx_deployment_target = '10.12' + tvos_deployment_target = '10.0' + watchos_deployment_target = '6.0' + + s.ios.deployment_target = ios_deployment_target + s.osx.deployment_target = osx_deployment_target + s.tvos.deployment_target = tvos_deployment_target + s.watchos.deployment_target = watchos_deployment_target s.cocoapods_version = '>= 1.4.0' s.static_framework = true @@ -31,10 +37,10 @@ Pod::Spec.new do |s| ] s.framework = 'Foundation' - s.dependency 'FirebaseCore', '~> 7.0' - s.dependency 'FirebaseInstallations', '~> 7.0' + s.dependency 'FirebaseCore', '~> 7.6' + s.dependency 'FirebaseInstallations', '~> 7.6' # TODO: Revisit this dependency - s.dependency 'GoogleUtilities/Logger', '~> 7.0' + s.dependency 'GoogleUtilities/Logger', '~> 7.2' s.dependency 'SwiftProtobuf', '~> 1.0' s.pod_target_xcconfig = { @@ -45,14 +51,14 @@ Pod::Spec.new do |s| s.test_spec 'unit' do |unit_tests| unit_tests.scheme = { :code_coverage => true } - unit_tests.platforms = {:ios => '10.0', :osx => '10.12', :tvos => '10.0'} + unit_tests.platforms = {:ios => ios_deployment_target, :osx => osx_deployment_target, :tvos => tvos_deployment_target} unit_tests.source_files = 'FirebaseMLModelDownloader/Tests/Unit/**/*.swift' unit_tests.requires_app_host = true end s.test_spec 'integration' do |int_tests| int_tests.scheme = { :code_coverage => true } - int_tests.platforms = {:ios => '10.0', :osx => '10.12', :tvos => '10.0'} + int_tests.platforms = {:ios => ios_deployment_target, :osx => osx_deployment_target, :tvos => tvos_deployment_target} int_tests.source_files = 'FirebaseMLModelDownloader/Tests/Integration/**/*.swift' int_tests.resources = 'FirebaseMLModelDownloader/Tests/Integration/Resources/GoogleService-Info.plist' int_tests.requires_app_host = true diff --git a/FirebaseMLModelInterpreter.podspec.json b/FirebaseMLModelInterpreter.podspec.json deleted file mode 100644 index 3a9666def1..0000000000 --- a/FirebaseMLModelInterpreter.podspec.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "authors": "Google, Inc.", - "dependencies": { - "FirebaseCore": "~> 7.0", - "FirebaseMLCommon": "~> 7.0-beta", - "GTMSessionFetcher/Core": "~> 1.1", - "GoogleUtilities/UserDefaults": "~> 7.0", - "TensorFlowLiteObjC": "~> 2.3.0" - }, - "description": "This pod contains the model interpreter to run the custom models on iOS. If ML Kit's pre-built models don't meet your needs, you can use a custom TensorFlow Lite model with ML Kit.", - "frameworks": [ - "Foundation" - ], - "homepage": "https://firebase.google.com/docs/ml-kit/", - "license": { - "text": "Copyright 2020 Google", - "type": "Copyright" - }, - "name": "FirebaseMLModelInterpreter", - "platforms": { - "ios": "10.0" - }, - "pod_target_xcconfig": { - "VALID_ARCHS": "x86_64 armv7 arm64" - }, - "preserve_paths": [ - "CHANGELOG.md", - "README.md" - ], - "source": { - "http": "https://dl.google.com/dl/cpdc/39b2739bdfc46d59/FirebaseMLModelInterpreter-0.21.0.tar.gz" - }, - "summary": "Firebase ML Kit Custom Model Interpreter SDK for iOS", - "vendored_frameworks": [ - "Frameworks/FirebaseMLModelInterpreter.framework" - ], - "version": "7.6.0-beta" -} diff --git a/FirebaseMLVision.podspec.json b/FirebaseMLVision.podspec.json deleted file mode 100644 index 6d074f72de..0000000000 --- a/FirebaseMLVision.podspec.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "authors": "Google, Inc.", - "dependencies": { - "FirebaseCore": "~> 7.0", - "FirebaseMLCommon": "~> 7.0-beta", - "GTMSessionFetcher/Core": "~> 1.1", - "GoogleAPIClientForREST/Core": "~> 1.3", - "GoogleAPIClientForREST/Vision": "~> 1.3", - "GoogleToolboxForMac/Logger": "~> 2.1", - "GoogleToolboxForMac/NSData+zlib": "~> 2.1", - "Protobuf": "~> 3.12" - }, - "description": "This is the top level pod for ML Kit for vision based features on iOS. ML Kit is a mobile SDK that brings Google's machine learning expertise to mobile devices in a powerful yet easy-to-use package.", - "frameworks": [ - "Accelerate", - "AVFoundation", - "CoreGraphics", - "CoreMedia", - "CoreVideo", - "Foundation", - "UIKit" - ], - "homepage": "https://firebase.google.com/docs/ml-kit/", - "license": { - "text": "Copyright 2020 Google", - "type": "Copyright" - }, - "name": "FirebaseMLVision", - "platforms": { - "ios": "10.0" - }, - "preserve_paths": [ - "CHANGELOG.md", - "README.md" - ], - "source": { - "http": "https://dl.google.com/dl/cpdc/58517163ccbb14d8/FirebaseMLVision-0.21.0.tar.gz" - }, - "summary": "Firebase ML Kit Vision SDK for iOS", - "vendored_frameworks": [ - "Frameworks/FirebaseMLVision.framework" - ], - "version": "7.6.0-beta" -} diff --git a/Package.swift b/Package.swift index d6e9c3b90f..42de4462e4 100644 --- a/Package.swift +++ b/Package.swift @@ -71,6 +71,10 @@ let package = Package( name: "FirebaseMessaging", targets: ["FirebaseMessaging"] ), + .library( + name: "FirebaseMLModelDownloader", + targets: ["FirebaseMLModelDownloader"] + ), .library( name: "FirebaseRemoteConfig", targets: ["FirebaseRemoteConfigTarget"] diff --git a/ReleaseTooling/CarthageJSON/FirebaseMLModelInterpreterBinary.json b/ReleaseTooling/CarthageJSON/FirebaseMLModelInterpreterBinary.json deleted file mode 100644 index 7e45d9d068..0000000000 --- a/ReleaseTooling/CarthageJSON/FirebaseMLModelInterpreterBinary.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "5.0.0": "https://dl.google.com/dl/firebase/ios/carthage/5.0.0/MLModelInterpreter-1902f18ca8a8a9b7.zip", - "5.0.1": "https://dl.google.com/dl/firebase/ios/carthage/5.0.1/MLModelInterpreter-8a92d847874454f7.zip", - "5.1.0": "https://dl.google.com/dl/firebase/ios/carthage/5.1.0/MLModelInterpreter-15f9ccdbe3aee8eb.zip", - "5.10.0": "https://dl.google.com/dl/firebase/ios/carthage/5.10.0/MLModelInterpreter-a2a68660bdf8bce0.zip", - "5.11.0": "https://dl.google.com/dl/firebase/ios/carthage/5.11.0/MLModelInterpreter-bdda7cb2c541ea70.zip", - "5.12.0": "https://dl.google.com/dl/firebase/ios/carthage/5.12.0/MLModelInterpreter-42193925f2fcc924.zip", - "5.13.0": "https://dl.google.com/dl/firebase/ios/carthage/5.13.0/MLModelInterpreter-5133ca85dd42e5f5.zip", - "5.14.0": "https://dl.google.com/dl/firebase/ios/carthage/5.14.0/MLModelInterpreter-998902aa3b3124c5.zip", - "5.15.0": "https://dl.google.com/dl/firebase/ios/carthage/5.15.0/MLModelInterpreter-5133ca85dd42e5f5.zip", - "5.16.0": "https://dl.google.com/dl/firebase/ios/carthage/5.16.0/MLModelInterpreter-50424896a79dda16.zip", - "5.17.0": "https://dl.google.com/dl/firebase/ios/carthage/5.17.0/MLModelInterpreter-1f9234bf7fdba97a.zip", - "5.18.1": "https://dl.google.com/dl/firebase/ios/carthage/5.18.1/MLModelInterpreter-dc8516d605fc68b8.zip", - "5.18.2": "https://dl.google.com/dl/firebase/ios/carthage/5.18.2/MLModelInterpreter-2478cb1a5b79f34c.zip", - "5.19.0": "https://dl.google.com/dl/firebase/ios/carthage/5.19.0/MLModelInterpreter-49b2e9f7f44e5733.zip", - "5.2.0": "https://dl.google.com/dl/firebase/ios/carthage/5.2.0/MLModelInterpreter-8a92d847874454f7.zip", - "5.20.0": "https://dl.google.com/dl/firebase/ios/carthage/5.20.0/MLModelInterpreter-49b2e9f7f44e5733.zip", - "5.3.0": "https://dl.google.com/dl/firebase/ios/carthage/5.3.0/MLModelInterpreter-bc010f043190af5f.zip", - "5.4.0": "https://dl.google.com/dl/firebase/ios/carthage/5.4.0/MLModelInterpreter-a31cf46a36af3516.zip", - "5.6.0": "https://dl.google.com/dl/firebase/ios/carthage/5.6.0/MLModelInterpreter-b71090cf977437e7.zip", - "5.8.0": "https://dl.google.com/dl/firebase/ios/carthage/5.8.0/MLModelInterpreter-b71090cf977437e7.zip", - "6.0.0": "https://dl.google.com/dl/firebase/ios/carthage/6.0.0/MLModelInterpreter-6b4d3b18369730a7.zip", - "6.1.0": "https://dl.google.com/dl/firebase/ios/carthage/6.1.0/MLModelInterpreter-525437adb333ef65.zip", - "6.10.0": "https://dl.google.com/dl/firebase/ios/carthage/6.10.0/MLModelInterpreter-1a81212d2ee59a26.zip", - "6.11.0": "https://dl.google.com/dl/firebase/ios/carthage/6.11.0/MLModelInterpreter-6f1bbacc59e049ba.zip", - "6.12.0": "https://dl.google.com/dl/firebase/ios/carthage/6.12.0/MLModelInterpreter-ce8b08876c6b0778.zip", - "6.13.0": "https://dl.google.com/dl/firebase/ios/carthage/6.13.0/MLModelInterpreter-c11d40ad304b5d9f.zip", - "6.14.0": "https://dl.google.com/dl/firebase/ios/carthage/6.14.0/FirebaseMLModelInterpreter-3c440dfd6f5c4e60.zip", - "6.15.0": "https://dl.google.com/dl/firebase/ios/carthage/6.15.0/FirebaseMLModelInterpreter-f0e7fd6860174ed4.zip", - "6.16.0": "https://dl.google.com/dl/firebase/ios/carthage/6.16.0/FirebaseMLModelInterpreter-85f144ddde4d8216.zip", - "6.17.0": "https://dl.google.com/dl/firebase/ios/carthage/6.17.0/FirebaseMLModelInterpreter-6282b758b0817a91.zip", - "6.18.0": "https://dl.google.com/dl/firebase/ios/carthage/6.18.0/FirebaseMLModelInterpreter-96261a8fe10373bc.zip", - "6.19.0": "https://dl.google.com/dl/firebase/ios/carthage/6.19.0/FirebaseMLModelInterpreter-b1de2c9e704c1533.zip", - "6.2.0": "https://dl.google.com/dl/firebase/ios/carthage/6.2.0/MLModelInterpreter-73e8b635fae79e22.zip", - "6.21.0": "https://dl.google.com/dl/firebase/ios/carthage/6.21.0/FirebaseMLModelInterpreter-bb2391a17a5fe752.zip", - "6.22.0": "https://dl.google.com/dl/firebase/ios/carthage/6.22.0/FirebaseMLModelInterpreter-6cee73f43a0d43ac.zip", - "6.23.0": "https://dl.google.com/dl/firebase/ios/carthage/6.23.0/FirebaseMLModelInterpreter-638a0ce20d6d8828.zip", - "6.24.0": "https://dl.google.com/dl/firebase/ios/carthage/6.24.0/FirebaseMLModelInterpreter-66f2618cc9db9350.zip", - "6.26.0": "https://dl.google.com/dl/firebase/ios/carthage/6.26.0/FirebaseMLModelInterpreter-fb25ba538535d3ca.zip", - "6.27.0": "https://dl.google.com/dl/firebase/ios/carthage/6.27.0/FirebaseMLModelInterpreter-4ee7efadd1e71000.zip", - "6.28.1": "https://dl.google.com/dl/firebase/ios/carthage/6.28.1/FirebaseMLModelInterpreter-466cf0cc8a0e2b1d.zip", - "6.29.0": "https://dl.google.com/dl/firebase/ios/carthage/6.29.0/FirebaseMLModelInterpreter-8f6ad25456e14a5b.zip", - "6.3.0": "https://dl.google.com/dl/firebase/ios/carthage/6.3.0/MLModelInterpreter-8b30f2722c12af6e.zip", - "6.30.0": "https://dl.google.com/dl/firebase/ios/carthage/6.30.0/FirebaseMLModelInterpreter-ab1483b3871826be.zip", - "6.31.0": "https://dl.google.com/dl/firebase/ios/carthage/6.31.0/FirebaseMLModelInterpreter-e52753e14c5c2e59.zip", - "6.32.0": "https://dl.google.com/dl/firebase/ios/carthage/6.32.0/FirebaseMLModelInterpreter-7cea9e9f9901900c.zip", - "6.33.0": "https://dl.google.com/dl/firebase/ios/carthage/6.33.0/FirebaseMLModelInterpreter-abe7cadaeb9fd726.zip", - "6.34.0": "https://dl.google.com/dl/firebase/ios/carthage/6.34.0/FirebaseMLModelInterpreter-2548a8c69c9c5a48.zip", - "6.4.0": "https://dl.google.com/dl/firebase/ios/carthage/6.4.0/MLModelInterpreter-7b8e7fb28011449f.zip", - "6.5.0": "https://dl.google.com/dl/firebase/ios/carthage/6.5.0/MLModelInterpreter-1628e2ea93564d98.zip", - "6.6.0": "https://dl.google.com/dl/firebase/ios/carthage/6.6.0/MLModelInterpreter-95dd038b0c3ddba3.zip", - "6.7.0": "https://dl.google.com/dl/firebase/ios/carthage/6.7.0/MLModelInterpreter-e62fba1f8d189c7a.zip", - "6.8.0": "https://dl.google.com/dl/firebase/ios/carthage/6.8.0/MLModelInterpreter-3c40949dd85ce1a9.zip", - "6.8.1": "https://dl.google.com/dl/firebase/ios/carthage/6.8.1/MLModelInterpreter-93ffa89a01ba2ce0.zip", - "6.9.0": "https://dl.google.com/dl/firebase/ios/carthage/6.9.0/MLModelInterpreter-74a3b3f21341aaf8.zip", - "7.0.0": "https://dl.google.com/dl/firebase/ios/carthage/7.0.0/FirebaseMLModelInterpreter-598dbe7131ecbbfa.zip", - "7.1.0": "https://dl.google.com/dl/firebase/ios/carthage/7.1.0/FirebaseMLModelInterpreter-6f03c38aa3de3041.zip", - "7.3.0": "https://dl.google.com/dl/firebase/ios/carthage/7.3.0/FirebaseMLModelInterpreter-e0956e3c725e5911.zip", - "7.4.0": "https://dl.google.com/dl/firebase/ios/carthage/7.4.0/FirebaseMLModelInterpreter-9e03949be0c54eb4.zip", - "7.5.0": "https://dl.google.com/dl/firebase/ios/carthage/7.5.0/FirebaseMLModelInterpreter-de46ed9016a84fd8.zip", - "7.6.0": "https://dl.google.com/dl/firebase/ios/carthage/7.6.0/FirebaseMLModelInterpreter-2b7bbe91b86abfe2.zip" -} diff --git a/ReleaseTooling/CarthageJSON/FirebaseMLVisionBinary.json b/ReleaseTooling/CarthageJSON/FirebaseMLVisionBinary.json deleted file mode 100644 index c9260e64b7..0000000000 --- a/ReleaseTooling/CarthageJSON/FirebaseMLVisionBinary.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "5.0.0": "https://dl.google.com/dl/firebase/ios/carthage/5.0.0/MLVision-9e49b6e070ca2f91.zip", - "5.0.1": "https://dl.google.com/dl/firebase/ios/carthage/5.0.1/MLVision-92012aa35fb4ef27.zip", - "5.1.0": "https://dl.google.com/dl/firebase/ios/carthage/5.1.0/MLVision-c633f32e03bca57c.zip", - "5.10.0": "https://dl.google.com/dl/firebase/ios/carthage/5.10.0/MLVision-2cc49c36aed317d5.zip", - "5.11.0": "https://dl.google.com/dl/firebase/ios/carthage/5.11.0/MLVision-5a547bfdeaa7316a.zip", - "5.12.0": "https://dl.google.com/dl/firebase/ios/carthage/5.12.0/MLVision-11b623dee4017b47.zip", - "5.13.0": "https://dl.google.com/dl/firebase/ios/carthage/5.13.0/MLVision-469f422cf9be2b04.zip", - "5.14.0": "https://dl.google.com/dl/firebase/ios/carthage/5.14.0/MLVision-fe3b316310f04b00.zip", - "5.15.0": "https://dl.google.com/dl/firebase/ios/carthage/5.15.0/MLVision-88dffe6c5b511616.zip", - "5.16.0": "https://dl.google.com/dl/firebase/ios/carthage/5.16.0/MLVision-5385b878f2c17869.zip", - "5.17.0": "https://dl.google.com/dl/firebase/ios/carthage/5.17.0/MLVision-675e78cc457bb742.zip", - "5.18.1": "https://dl.google.com/dl/firebase/ios/carthage/5.18.1/MLVision-78d174263801ef56.zip", - "5.18.2": "https://dl.google.com/dl/firebase/ios/carthage/5.18.2/MLVision-5e17497802593606.zip", - "5.19.0": "https://dl.google.com/dl/firebase/ios/carthage/5.19.0/MLVision-a17acd7dd1fef0b6.zip", - "5.2.0": "https://dl.google.com/dl/firebase/ios/carthage/5.2.0/MLVision-33646850be69c8e9.zip", - "5.20.0": "https://dl.google.com/dl/firebase/ios/carthage/5.20.0/MLVision-a17acd7dd1fef0b6.zip", - "5.3.0": "https://dl.google.com/dl/firebase/ios/carthage/5.3.0/MLVision-cc8c8f876440ab84.zip", - "5.4.0": "https://dl.google.com/dl/firebase/ios/carthage/5.4.0/MLVision-0ee612ddaf649c16.zip", - "5.6.0": "https://dl.google.com/dl/firebase/ios/carthage/5.6.0/MLVision-452587055d7b08de.zip", - "5.8.0": "https://dl.google.com/dl/firebase/ios/carthage/5.8.0/MLVision-15faf93b7589deaa.zip", - "6.0.0": "https://dl.google.com/dl/firebase/ios/carthage/6.0.0/MLVision-fb53706a99ef3b2d.zip", - "6.1.0": "https://dl.google.com/dl/firebase/ios/carthage/6.1.0/MLVision-dce58e35703c605e.zip", - "6.10.0": "https://dl.google.com/dl/firebase/ios/carthage/6.10.0/MLVision-76d573bca06a33ba.zip", - "6.11.0": "https://dl.google.com/dl/firebase/ios/carthage/6.11.0/MLVision-6940e6eff28245a7.zip", - "6.12.0": "https://dl.google.com/dl/firebase/ios/carthage/6.12.0/MLVision-0850f0583a6210fb.zip", - "6.13.0": "https://dl.google.com/dl/firebase/ios/carthage/6.13.0/MLVision-f87e55786ec35793.zip", - "6.14.0": "https://dl.google.com/dl/firebase/ios/carthage/6.14.0/FirebaseMLVision-df9b0480d2d08ffd.zip", - "6.15.0": "https://dl.google.com/dl/firebase/ios/carthage/6.15.0/FirebaseMLVision-1f03875aed025434.zip", - "6.16.0": "https://dl.google.com/dl/firebase/ios/carthage/6.16.0/FirebaseMLVision-9f003b047d7f5863.zip", - "6.17.0": "https://dl.google.com/dl/firebase/ios/carthage/6.17.0/FirebaseMLVision-e75132b8d7ae5f71.zip", - "6.18.0": "https://dl.google.com/dl/firebase/ios/carthage/6.18.0/FirebaseMLVision-4edfaeef2a823114.zip", - "6.19.0": "https://dl.google.com/dl/firebase/ios/carthage/6.19.0/FirebaseMLVision-2cdc50623adf672b.zip", - "6.21.0": "https://dl.google.com/dl/firebase/ios/carthage/6.21.0/FirebaseMLVision-3d0e44b944226224.zip", - "6.22.0": "https://dl.google.com/dl/firebase/ios/carthage/6.22.0/FirebaseMLVision-386f1618dbf718a0.zip", - "6.23.0": "https://dl.google.com/dl/firebase/ios/carthage/6.23.0/FirebaseMLVision-6b68b9eb26b22df1.zip", - "6.24.0": "https://dl.google.com/dl/firebase/ios/carthage/6.24.0/FirebaseMLVision-aa0e831c317be7e0.zip", - "6.26.0": "https://dl.google.com/dl/firebase/ios/carthage/6.26.0/FirebaseMLVision-b55df83da462b90e.zip", - "6.27.0": "https://dl.google.com/dl/firebase/ios/carthage/6.27.0/FirebaseMLVision-d7dbf7cefa592a77.zip", - "6.28.1": "https://dl.google.com/dl/firebase/ios/carthage/6.28.1/FirebaseMLVision-e1c42623912ed2e8.zip", - "6.29.0": "https://dl.google.com/dl/firebase/ios/carthage/6.29.0/FirebaseMLVision-dc49a9dd6d96eba6.zip", - "6.3.0": "https://dl.google.com/dl/firebase/ios/carthage/6.3.0/MLVision-d52cc97904431671.zip", - "6.30.0": "https://dl.google.com/dl/firebase/ios/carthage/6.30.0/FirebaseMLVision-e0e813bbedd28115.zip", - "6.31.0": "https://dl.google.com/dl/firebase/ios/carthage/6.31.0/FirebaseMLVision-01dc35c70fb36838.zip", - "6.32.0": "https://dl.google.com/dl/firebase/ios/carthage/6.32.0/FirebaseMLVision-e0f043b5da95925e.zip", - "6.33.0": "https://dl.google.com/dl/firebase/ios/carthage/6.33.0/FirebaseMLVision-b444e36524be38a2.zip", - "6.34.0": "https://dl.google.com/dl/firebase/ios/carthage/6.34.0/FirebaseMLVision-f8f99b749142aeac.zip", - "6.4.0": "https://dl.google.com/dl/firebase/ios/carthage/6.4.0/MLVision-f1010445497ba321.zip", - "6.5.0": "https://dl.google.com/dl/firebase/ios/carthage/6.5.0/MLVision-420d9692bd18f993.zip", - "6.6.0": "https://dl.google.com/dl/firebase/ios/carthage/6.6.0/MLVision-b87782b9ba823c18.zip", - "6.7.0": "https://dl.google.com/dl/firebase/ios/carthage/6.7.0/MLVision-c3e846569bbe02d1.zip", - "6.8.0": "https://dl.google.com/dl/firebase/ios/carthage/6.8.0/MLVision-ad10830fa4b4e3f2.zip", - "6.8.1": "https://dl.google.com/dl/firebase/ios/carthage/6.8.1/MLVision-da1555cbd8e67179.zip", - "6.9.0": "https://dl.google.com/dl/firebase/ios/carthage/6.9.0/MLVision-6c096f05c921a75c.zip", - "7.0.0": "https://dl.google.com/dl/firebase/ios/carthage/7.0.0/FirebaseMLVision-a59360c1b433db16.zip", - "7.1.0": "https://dl.google.com/dl/firebase/ios/carthage/7.1.0/FirebaseMLVision-f795f4b30c30f60b.zip", - "7.3.0": "https://dl.google.com/dl/firebase/ios/carthage/7.3.0/FirebaseMLVision-5159850f4538a6bb.zip", - "7.4.0": "https://dl.google.com/dl/firebase/ios/carthage/7.4.0/FirebaseMLVision-96604b7c39870712.zip", - "7.5.0": "https://dl.google.com/dl/firebase/ios/carthage/7.5.0/FirebaseMLVision-67ffdbda7818cdee.zip", - "7.6.0": "https://dl.google.com/dl/firebase/ios/carthage/7.6.0/FirebaseMLVision-dd3e3d164d7ac7cc.zip" -} diff --git a/ReleaseTooling/Sources/FirebaseManifest/FirebaseManifest.swift b/ReleaseTooling/Sources/FirebaseManifest/FirebaseManifest.swift index fca566eede..241e927962 100755 --- a/ReleaseTooling/Sources/FirebaseManifest/FirebaseManifest.swift +++ b/ReleaseTooling/Sources/FirebaseManifest/FirebaseManifest.swift @@ -44,10 +44,7 @@ public let shared = Manifest( Pod("FirebasePerformance", platforms: ["ios", "tvos"], zip: true), Pod("FirebaseStorage", zip: true), Pod("FirebaseStorageSwift", isBeta: true), - Pod("FirebaseMLCommon", isClosedSource: true, isBeta: true, platforms: ["ios"]), - Pod("FirebaseMLModelInterpreter", isClosedSource: true, isBeta: true, platforms: ["ios"], - zip: true), - Pod("FirebaseMLVision", isClosedSource: true, isBeta: true, platforms: ["ios"], zip: true), + Pod("FirebaseMLModelDownloader", isBeta: true, zip: true), Pod("Firebase", allowWarnings: true, zip: true), ] ) diff --git a/ReleaseTooling/Sources/ZipBuilder/FrameworkBuilder.swift b/ReleaseTooling/Sources/ZipBuilder/FrameworkBuilder.swift index 63b4639871..240464e588 100755 --- a/ReleaseTooling/Sources/ZipBuilder/FrameworkBuilder.swift +++ b/ReleaseTooling/Sources/ZipBuilder/FrameworkBuilder.swift @@ -370,6 +370,7 @@ struct FrameworkBuilder { if framework.hasPrefix("Firebase") || framework == "GoogleDataTransport", framework != "FirebaseCoreDiagnostics", framework != "FirebaseUI", + framework != "FirebaseMLModelDownloader", !framework.hasSuffix("Swift") { // Delete CocoaPods generated umbrella and use pre-generated one. do { @@ -456,9 +457,12 @@ struct FrameworkBuilder { /// Parses CocoaPods config files or uses the passed in `moduleMapContents` to write the /// appropriate `moduleMap` to the `destination`. + /// Returns true to fail if building for Carthage and there are Swift modules. + @discardableResult private func packageModuleMaps(inFrameworks frameworks: [URL], moduleMapContents: String, - destination: URL) { + destination: URL, + buildingCarthage: Bool = false) -> Bool { // CocoaPods does not put dependent frameworks and libraries into the module maps it generates. // Instead it use build options to specify them. For the zip build, we need the module maps to // include the dependent frameworks and libraries. Therefore we reconstruct them by parsing @@ -469,28 +473,34 @@ struct FrameworkBuilder { // This is sufficient for the testing done so far, but more testing is required to determine // if dependent libraries and frameworks also may need to be added to the Swift module maps in // some cases. - let builtSwiftModules = makeSwiftModuleMap(thinFrameworks: frameworks, destination: destination) - if !builtSwiftModules { - // Copy the module map to the destination. - let moduleDir = destination.appendingPathComponent("Modules") - do { - try FileManager.default.createDirectory(at: moduleDir, withIntermediateDirectories: true) - } catch { - let frameworkName: String = frameworks.first?.lastPathComponent ?? " Bool { + /// Returns true if there are Swift modules. + private func makeSwiftModuleMap(thinFrameworks: [URL], + destination: URL, + buildingCarthage: Bool = false) -> Bool { let fileManager = FileManager.default for thinFramework in thinFrameworks { @@ -503,6 +513,8 @@ struct FrameworkBuilder { let swiftModules = files.filter { $0.hasSuffix(".swiftmodule") } if swiftModules.isEmpty { return false + } else if buildingCarthage { + return true } guard let first = swiftModules.first, let swiftModule = URL(string: first) else { @@ -694,7 +706,7 @@ struct FrameworkBuilder { fromFolder: URL, slicedFrameworks: [TargetPlatform: URL], resourceContents: URL, - moduleMapContents: String) -> URL { + moduleMapContents: String) -> URL? { let fileManager = FileManager.default // Create a `.framework` for each of the thinArchives using the `fromFolder` as the base. @@ -714,9 +726,17 @@ struct FrameworkBuilder { slicedBinariesForCarthage(fromFrameworks: slicedFrameworks, workingDir: platformFrameworksDir) + // Copy the framework in the appropriate directory structure. + let frameworkDir = platformFrameworksDir.appendingPathComponent(fromFolder.lastPathComponent) + do { + try fileManager.copyItem(at: fromFolder, to: frameworkDir) + } catch { + fatalError("Could not create .framework needed to build \(framework) for Carthage: \(error)") + } + // Build the fat archive using the `lipo` command to make one fat binary that Carthage can use // in the framework. We need the full archive path. - let fatArchive = platformFrameworksDir.appendingPathComponent(framework) + let fatArchive = frameworkDir.appendingPathComponent(framework) let result = FrameworkBuilder.syncExec( command: "/usr/bin/lipo", args: ["-create", "-output", fatArchive.path] + thinSlices.map { $0.value.path } @@ -731,21 +751,21 @@ struct FrameworkBuilder { print("lipo command for \(framework) succeeded.") } - // Copy the framework and the fat binary artifact into the appropriate directory structure. - let frameworkDir = platformFrameworksDir.appendingPathComponent(fromFolder.lastPathComponent) - let archiveDestination = frameworkDir.appendingPathComponent(framework) - do { - try fileManager.copyItem(at: fromFolder, to: frameworkDir) - try fileManager.copyItem(at: fatArchive, to: archiveDestination) - } catch { - fatalError("Could not create .framework needed to build \(framework) for Carthage: \(error)") + // Package the modulemaps. The build architecture does not support constructing Swift module + // maps for the Carthage distribution, so skip this pod if there is any Swift. + let foundSwift = packageModuleMaps(inFrameworks: slicedFrameworks.map { $0.value }, + moduleMapContents: moduleMapContents, + destination: frameworkDir, + buildingCarthage: true) + if foundSwift { + do { + try fileManager.removeItem(at: frameworkDir) + } catch { + fatalError("Could not remove \(frameworkDir) \(error)") + } + return nil } - // Package the modulemaps. Special consideration is needed for Swift modules. - packageModuleMaps(inFrameworks: slicedFrameworks.map { $0.value }, - moduleMapContents: moduleMapContents, - destination: frameworkDir) - // Carthage Resources are packaged in the framework. // Copy them instead of moving them, since they'll still need to be copied into the xcframework. let resourceDir = frameworkDir.appendingPathComponent("Resources") @@ -757,17 +777,6 @@ struct FrameworkBuilder { fatalError("Could not move bundles into Resources directory while building \(framework): " + "\(error)") } - - // Clean up the fat archive we built. - do { - try fileManager.removeItem(at: fatArchive) - } catch { - print(""" - Tried to remove fat binary for \(framework) at \(fatArchive.path) but couldn't. This is \ - not a failure, but you may want to remove the file afterwards to save disk space. - """) - } - return frameworkDir } diff --git a/ReleaseTooling/Sources/ZipBuilder/ZipBuilder.swift b/ReleaseTooling/Sources/ZipBuilder/ZipBuilder.swift index 75a49ef4ed..09a4848e24 100644 --- a/ReleaseTooling/Sources/ZipBuilder/ZipBuilder.swift +++ b/ReleaseTooling/Sources/ZipBuilder/ZipBuilder.swift @@ -406,6 +406,10 @@ struct ZipBuilder { }.sorted { $0.key < $1.key } for pod in remainingPods { do { + if frameworksToAssemble[pod.key] == nil { + // Continue if the pod wasn't built - like Swift frameworks for Carthage. + continue + } let (productDir, podFrameworks) = try installAndCopyFrameworks(forPod: pod.key, withInstalledPods: installedPods,