fix: SPM migration - fix Package.swift product refs, pod deintegrate,…#874
Conversation
… update gitignore
|
built example ios app, it works. |
|
|
@arrrrny : |
There was a problem hiding this comment.
Pull request overview
This PR continues the iOS Swift Package Manager (SPM) migration across the google_mlkit_* Flutter plugins by introducing Package.swift manifests and SPM-friendly Swift sources, updating shared iOS utilities in google_mlkit_commons, and deintegrating CocoaPods from the example iOS app.
Changes:
- Add SwiftPM
Package.swiftmanifests (and SPMSources/implementations) for multiple iOS plugin packages. - Introduce/port shared iOS Swift utilities in
google_mlkit_commons(e.g.,VisionImagecreation + a generic model manager). - Migrate the example iOS app away from CocoaPods (remove Podfile/Podfile.lock references, add SwiftPM resolved state) and update
.gitignorefor SwiftPM artifacts.
Reviewed changes
Copilot reviewed 42 out of 67 changed files in this pull request and generated 20 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/google_mlkit_translation/ios/google_mlkit_translation/Sources/google_mlkit_translation/GoogleMlKitTranslationPlugin.swift | Adds SPM Sources/ implementation for Translation plugin. |
| packages/google_mlkit_translation/ios/google_mlkit_translation/Package.swift | Adds SwiftPM manifest for Translation plugin. |
| packages/google_mlkit_translation/ios/google_mlkit_translation/Classes/GoogleMlKitTranslationPlugin.swift | Keeps CocoaPods Classes/ implementation for Translation plugin. |
| packages/google_mlkit_text_recognition/ios/google_mlkit_text_recognition/Sources/google_mlkit_text_recognition/GoogleMlKitTextRecognitionPlugin.swift | Adds SPM Sources/ implementation for Text Recognition plugin. |
| packages/google_mlkit_text_recognition/ios/google_mlkit_text_recognition/Package.swift | Adds SwiftPM manifest for Text Recognition plugin. |
| packages/google_mlkit_text_recognition/ios/google_mlkit_text_recognition/Classes/GoogleMlKitTextRecognitionPlugin.swift | Keeps CocoaPods Classes/ implementation for Text Recognition plugin. |
| packages/google_mlkit_subject_segmentation/ios/google_mlkit_subject_segmentation/Sources/google_mlkit_subject_segmentation/GoogleMlKitSubjectSegmentationPlugin.swift | Adds SPM Sources/ stub implementation for Subject Segmentation plugin. |
| packages/google_mlkit_subject_segmentation/ios/google_mlkit_subject_segmentation/Package.swift | Adds SwiftPM manifest for Subject Segmentation plugin. |
| packages/google_mlkit_smart_reply/ios/google_mlkit_smart_reply/Sources/google_mlkit_smart_reply/GoogleMlKitSmartReplyPlugin.swift | Adds SPM Sources/ implementation for Smart Reply plugin. |
| packages/google_mlkit_smart_reply/ios/google_mlkit_smart_reply/Package.swift | Adds SwiftPM manifest for Smart Reply plugin. |
| packages/google_mlkit_smart_reply/ios/google_mlkit_smart_reply/Classes/GoogleMlKitSmartReplyPlugin.swift | Keeps CocoaPods Classes/ implementation for Smart Reply plugin. |
| packages/google_mlkit_selfie_segmentation/ios/google_mlkit_selfie_segmentation/Sources/google_mlkit_selfie_segmentation/GoogleMlKitSelfieSegmentationPlugin.swift | Adds SPM Sources/ implementation for Selfie Segmentation plugin. |
| packages/google_mlkit_selfie_segmentation/ios/google_mlkit_selfie_segmentation/Package.swift | Adds SwiftPM manifest for Selfie Segmentation plugin. |
| packages/google_mlkit_selfie_segmentation/ios/google_mlkit_selfie_segmentation/Classes/GoogleMlKitSelfieSegmentationPlugin.swift | Keeps CocoaPods Classes/ implementation for Selfie Segmentation plugin. |
| packages/google_mlkit_pose_detection/ios/google_mlkit_pose_detection/Sources/google_mlkit_pose_detection/GoogleMlKitPoseDetectionPlugin.swift | Adds SPM Sources/ implementation for Pose Detection plugin. |
| packages/google_mlkit_pose_detection/ios/google_mlkit_pose_detection/Package.swift | Adds SwiftPM manifest for Pose Detection plugin. |
| packages/google_mlkit_pose_detection/ios/google_mlkit_pose_detection/Classes/GoogleMlKitPoseDetectionPlugin.swift | Keeps CocoaPods Classes/ implementation for Pose Detection plugin. |
| packages/google_mlkit_object_detection/ios/google_mlkit_object_detection/Sources/google_mlkit_object_detection/GoogleMlKitObjectDetectionPlugin.swift | Adds SPM Sources/ implementation for Object Detection plugin. |
| packages/google_mlkit_object_detection/ios/google_mlkit_object_detection/Package.swift | Adds SwiftPM manifest for Object Detection plugin. |
| packages/google_mlkit_object_detection/ios/google_mlkit_object_detection/Classes/GoogleMlKitObjectDetectionPlugin.swift | Keeps CocoaPods Classes/ implementation for Object Detection plugin. |
| packages/google_mlkit_language_id/ios/google_mlkit_language_id/Sources/google_mlkit_language_id/GoogleMlKitLanguageIdPlugin.swift | Adds SPM Sources/ implementation for Language ID plugin. |
| packages/google_mlkit_language_id/ios/google_mlkit_language_id/Package.swift | Adds SwiftPM manifest for Language ID plugin. |
| packages/google_mlkit_language_id/ios/google_mlkit_language_id/Classes/GoogleMlKitLanguageIdPlugin.swift | Keeps CocoaPods Classes/ implementation for Language ID plugin. |
| packages/google_mlkit_image_labeling/ios/google_mlkit_image_labeling/Sources/google_mlkit_image_labeling/GoogleMlKitImageLabelingPlugin.swift | Adds SPM Sources/ implementation for Image Labeling plugin. |
| packages/google_mlkit_image_labeling/ios/google_mlkit_image_labeling/Package.swift | Adds SwiftPM manifest for Image Labeling plugin. |
| packages/google_mlkit_image_labeling/ios/google_mlkit_image_labeling/Classes/GoogleMlKitImageLabelingPlugin.swift | Keeps CocoaPods Classes/ implementation for Image Labeling plugin. |
| packages/google_mlkit_genai_summarization/ios/google_mlkit_genai_summarization/Sources/google_mlkit_genai_summarization/GoogleMlKitGenaiSummarizationPlugin.swift | Adds iOS stub implementation for GenAI Summarization plugin. |
| packages/google_mlkit_genai_summarization/ios/google_mlkit_genai_summarization/Package.swift | Adds SwiftPM manifest for GenAI Summarization plugin. |
| packages/google_mlkit_genai_speech_recognition/ios/google_mlkit_genai_speech_recognition/Sources/google_mlkit_genai_speech_recognition/GoogleMlKitGenaiSpeechRecognitionPlugin.swift | Adds iOS stub implementation for GenAI Speech Recognition plugin. |
| packages/google_mlkit_genai_speech_recognition/ios/google_mlkit_genai_speech_recognition/Package.swift | Adds SwiftPM manifest for GenAI Speech Recognition plugin. |
| packages/google_mlkit_genai_rewriting/ios/google_mlkit_genai_rewriting/Sources/google_mlkit_genai_rewriting/GoogleMlKitGenaiRewritingPlugin.swift | Adds iOS stub implementation for GenAI Rewriting plugin. |
| packages/google_mlkit_genai_rewriting/ios/google_mlkit_genai_rewriting/Package.swift | Adds SwiftPM manifest for GenAI Rewriting plugin. |
| packages/google_mlkit_genai_proofreading/ios/google_mlkit_genai_proofreading/Sources/google_mlkit_genai_proofreading/GoogleMlKitGenaiProofreadingPlugin.swift | Adds iOS stub implementation for GenAI Proofreading plugin. |
| packages/google_mlkit_genai_proofreading/ios/google_mlkit_genai_proofreading/Package.swift | Adds SwiftPM manifest for GenAI Proofreading plugin. |
| packages/google_mlkit_genai_prompt/ios/google_mlkit_genai_prompt/Sources/google_mlkit_genai_prompt/GoogleMlKitGenaiPromptPlugin.swift | Adds iOS stub implementation for GenAI Prompt plugin. |
| packages/google_mlkit_genai_prompt/ios/google_mlkit_genai_prompt/Package.swift | Adds SwiftPM manifest for GenAI Prompt plugin. |
| packages/google_mlkit_genai_image_description/ios/google_mlkit_genai_image_description/Sources/google_mlkit_genai_image_description/GoogleMlKitGenaiImageDescriptionPlugin.swift | Adds iOS stub implementation for GenAI Image Description plugin. |
| packages/google_mlkit_genai_image_description/ios/google_mlkit_genai_image_description/Package.swift | Adds SwiftPM manifest for GenAI Image Description plugin. |
| packages/google_mlkit_face_mesh_detection/ios/google_mlkit_face_mesh_detection/Sources/google_mlkit_face_mesh_detection/GoogleMlKitFaceMeshDetectionPlugin.swift | Adds iOS stub implementation for Face Mesh Detection plugin. |
| packages/google_mlkit_face_mesh_detection/ios/google_mlkit_face_mesh_detection/Package.swift | Adds SwiftPM manifest for Face Mesh Detection plugin. |
| packages/google_mlkit_face_detection/ios/google_mlkit_face_detection/Sources/google_mlkit_face_detection/GoogleMlKitFaceDetectionPlugin.swift | Adds SPM Sources/ implementation for Face Detection plugin. |
| packages/google_mlkit_face_detection/ios/google_mlkit_face_detection/Package.swift | Adds SwiftPM manifest for Face Detection plugin. |
| packages/google_mlkit_entity_extraction/ios/google_mlkit_entity_extraction/Sources/google_mlkit_entity_extraction/GoogleMlKitEntityExtractionPlugin.swift | Adds SPM Sources/ implementation + SPM-availability gating for Entity Extraction. |
| packages/google_mlkit_entity_extraction/ios/google_mlkit_entity_extraction/Package.swift | Adds SwiftPM manifest for Entity Extraction plugin. |
| packages/google_mlkit_entity_extraction/ios/Classes/GoogleMlKitEntityExtractionPlugin.swift | Removes the prior CocoaPods-only implementation file. |
| packages/google_mlkit_document_scanner/ios/google_mlkit_document_scanner/Sources/google_mlkit_document_scanner/GoogleMlKitDocumentScannerPlugin.swift | Adds SPM Sources/ implementation for Document Scanner plugin. |
| packages/google_mlkit_document_scanner/ios/google_mlkit_document_scanner/Package.swift | Adds SwiftPM manifest for Document Scanner plugin. |
| packages/google_mlkit_digital_ink_recognition/ios/google_mlkit_digital_ink_recognition/Sources/google_mlkit_digital_ink_recognition/GoogleMlKitDigitalInkRecognitionPlugin.swift | Adds SPM Sources/ implementation + SPM-availability gating for Digital Ink Recognition. |
| packages/google_mlkit_digital_ink_recognition/ios/google_mlkit_digital_ink_recognition/Package.swift | Adds SwiftPM manifest for Digital Ink Recognition plugin. |
| packages/google_mlkit_digital_ink_recognition/ios/Classes/GoogleMlKitDigitalInkRecognitionPlugin.swift | Removes the prior CocoaPods-only implementation file. |
| packages/google_mlkit_commons/ios/google_mlkit_commons/Sources/google_mlkit_commons/MLKVisionImage+FlutterPlugin.swift | Adds Swift VisionImage factory from Flutter image data. |
| packages/google_mlkit_commons/ios/google_mlkit_commons/Sources/google_mlkit_commons/GoogleMlKitCommonsPlugin.swift | Adds SPM Sources/ plugin registrar stub for commons. |
| packages/google_mlkit_commons/ios/google_mlkit_commons/Sources/google_mlkit_commons/GenericModelManager.swift | Adds a shared model manager helper for download/delete/check flows. |
| packages/google_mlkit_commons/ios/google_mlkit_commons/Package.swift | Adds SwiftPM manifest for commons package. |
| packages/google_mlkit_commons/ios/google_mlkit_commons/Package.resolved | Pins SwiftPM dependencies for commons. |
| packages/google_mlkit_barcode_scanning/ios/google_mlkit_barcode_scanning/Sources/google_mlkit_barcode_scanning/GoogleMlKitBarcodeScanningPlugin.swift | Adds SPM Sources/ implementation for Barcode Scanning plugin. |
| packages/google_mlkit_barcode_scanning/ios/google_mlkit_barcode_scanning/Package.swift | Adds SwiftPM manifest for Barcode Scanning plugin. |
| packages/example/pubspec.lock | Updates Dart/Flutter dependencies lockfile. |
| packages/example/ios/Runner.xcworkspace/xcshareddata/swiftpm/Package.resolved | Adds SwiftPM resolved state for the example app workspace. |
| packages/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved | Adds SwiftPM resolved state for the example app project workspace. |
| packages/example/ios/Runner.xcodeproj/project.pbxproj | Removes CocoaPods artifacts from Xcode project and adjusts settings for SPM. |
| packages/example/ios/Podfile.lock | Removes CocoaPods lockfile from example app. |
| packages/example/ios/Podfile | Removes CocoaPods Podfile from example app. |
| packages/example/ios/Flutter/Release.xcconfig | Removes CocoaPods xcconfig include for Release. |
| packages/example/ios/Flutter/Profile.xcconfig | Removes CocoaPods xcconfig include for Profile. |
| packages/example/ios/Flutter/Debug.xcconfig | Removes CocoaPods xcconfig include for Debug. |
| .gitignore | Ignores SwiftPM build metadata directories. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
@arrrrny : Address the Copilot comments |
|
@arrrrny : take a look at the new comments ^^ |
|
@arrrrny : |
|
@arrrrny : There are some hidden comments that need to be addressed as well:
|
|
@arrrrny : thanks for bearing with me and working on all of this changes. |
…tion with explanatory comment
|
@arrrrny : could you mark as resolved all the comments, even the hidden ones? |
|
@arrrrny : Did you run this code on an actual device? I merged the code and tested on a device. I tried doing face detection and barcode scanning and it is crashing at run time: Because of that this PR has been reverted and move to a feature branch. |
|
this is the branch if you want to give it a try: |
|
Quick status update: ✅ Barcode scanning — tested and working on device with ❌ Text Recognition, Object Detection, Pose Detection, Selfie Segmentation — all fail at runtime because I've filed an upstream issue with a detailed explanation of the root cause and suggested fix: d-date/google-mlkit-swiftpm#106 Face Detection and Image Labeling should also work (they have separate |



… update gitignore