Skip to content

Commit ea6be94

Browse files
arrrrnyfbernaly
authored andcommitted
feat: add Swift Package Manager (SPM) support for iOS (#870)
* feat: add Swift Package Manager support for all ML Kit packages This extends PR #870 to cover all ML Kit packages that need Swift Package Manager support for Flutter 3.44+ iOS builds. Packages with MLKit dependencies: - google_mlkit_barcode_scanning: MLKitBarcodeScanning - google_mlkit_digital_ink_recognition: MLKitDigitalInkRecognition - google_mlkit_document_scanner: MLKitDocumentScanner - google_mlkit_entity_extraction: MLKitEntityExtraction - google_mlkit_face_detection: MLKitFaceDetection - google_mlkit_face_mesh_detection: MLKitFaceMesh - google_mlkit_image_labeling: MLKitImageLabeling, MLKitImageLabelingCommon - google_mlkit_language_id: MLKitLanguageID - google_mlkit_object_detection: MLKitObjectDetection - google_mlkit_selfie_segmentation: MLKitSegmentationSelfie - google_mlkit_smart_reply: MLKitSmartReply - google_mlkit_text_recognition: MLKitTextRecognition - google_mlkit_translation: MLKitTranslate - google_mlkit_subject_segmentation: MLKitSegmentationSubject GenAI packages (iOS stubs only) - no MLKit dependencies: - google_mlkit_genai_image_description - google_mlkit_genai_prompt - google_mlkit_genai_proofreading - google_mlkit_genai_rewriting - google_mlkit_genai_speech_recognition - google_mlkit_genai_summarization All packages now support Swift Package Manager using d-date/google-mlkit-swiftpm as the MLKit binary distribution. Fixes issue #868 * feat: add missing Package.swift for google_mlkit_commons and google_mlkit_pose_detection * fix: move Package.swift to correct Swift Package Manager path Flutter expects Package.swift at ios/<package_name>/Package.swift, not ios/Package.swift. Changes: - Move all 22 Package.swift files to ios/<package_name>/ subdirectories - Update path from 'Classes' to '../Classes' for correct relative path resolution This fixes Swift Package Manager detection for all ML Kit plugins. * fix: correct Swift Package Manager package reference name Swift Package Manager uses the URL-derived package name, not the @objc product name. Changed all package references from 'GoogleMLKitSwiftPM' to 'google-mlkit-swiftpm'. Also fixed GenAI packages (empty dependencies) to have valid SPM format.
1 parent 614ac2b commit ea6be94

25 files changed

Lines changed: 781 additions & 67 deletions

File tree

  • packages
    • example
    • google_mlkit_barcode_scanning/ios/google_mlkit_barcode_scanning
    • google_mlkit_commons/ios/google_mlkit_commons
    • google_mlkit_digital_ink_recognition/ios/google_mlkit_digital_ink_recognition
    • google_mlkit_document_scanner/ios/google_mlkit_document_scanner
    • google_mlkit_entity_extraction/ios/google_mlkit_entity_extraction
    • google_mlkit_face_detection/ios/google_mlkit_face_detection
    • google_mlkit_face_mesh_detection/ios/google_mlkit_face_mesh_detection
    • google_mlkit_genai_image_description/ios/google_mlkit_genai_image_description
    • google_mlkit_genai_prompt/ios/google_mlkit_genai_prompt
    • google_mlkit_genai_proofreading/ios/google_mlkit_genai_proofreading
    • google_mlkit_genai_rewriting/ios/google_mlkit_genai_rewriting
    • google_mlkit_genai_speech_recognition/ios/google_mlkit_genai_speech_recognition
    • google_mlkit_genai_summarization/ios/google_mlkit_genai_summarization
    • google_mlkit_image_labeling/ios/google_mlkit_image_labeling
    • google_mlkit_language_id/ios/google_mlkit_language_id
    • google_mlkit_object_detection/ios/google_mlkit_object_detection
    • google_mlkit_pose_detection/ios/google_mlkit_pose_detection
    • google_mlkit_selfie_segmentation/ios/google_mlkit_selfie_segmentation
    • google_mlkit_smart_reply/ios/google_mlkit_smart_reply
    • google_mlkit_subject_segmentation/ios/google_mlkit_subject_segmentation
    • google_mlkit_text_recognition/ios/google_mlkit_text_recognition
    • google_mlkit_translation/ios/google_mlkit_translation
Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,2 @@
1-
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"
21
#include "Generated.xcconfig"
32
#include? "Local.xcconfig"

packages/example/ios/Runner.xcodeproj/project.pbxproj

Lines changed: 0 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88

99
/* Begin PBXBuildFile section */
1010
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
11-
19BEEF351D804C298C54516F /* libPods-Runner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 185FF648C8C3525E10052A2C /* libPods-Runner.a */; };
1211
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
1312
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
1413
78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */ = {isa = PBXBuildFile; productRef = 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */; };
@@ -31,18 +30,14 @@
3130
/* End PBXCopyFilesBuildPhase section */
3231

3332
/* Begin PBXFileReference section */
34-
07F1C45CAB683E2489041B44 /* 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 = "<group>"; };
3533
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
3634
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
37-
185FF648C8C3525E10052A2C /* libPods-Runner.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Runner.a"; sourceTree = BUILT_PRODUCTS_DIR; };
3835
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
3936
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
4037
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
4138
78E0A7A72DC9AD7400C4905E /* FlutterGeneratedPluginSwiftPackage */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = FlutterGeneratedPluginSwiftPackage; path = Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage; sourceTree = "<group>"; };
4239
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
4340
7AFA3C8F1D35360C0083082F /* Profile.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Profile.xcconfig; path = Flutter/Profile.xcconfig; sourceTree = "<group>"; };
44-
8A014A7A90898F823F3D4B3D /* 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 = "<group>"; };
45-
923A943AD1A8668FF24F5D59 /* 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 = "<group>"; };
4641
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
4742
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
4843
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -58,7 +53,6 @@
5853
buildActionMask = 2147483647;
5954
files = (
6055
78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */,
61-
19BEEF351D804C298C54516F /* libPods-Runner.a in Frameworks */,
6256
);
6357
runOnlyForDeploymentPostprocessing = 0;
6458
};
@@ -68,21 +62,10 @@
6862
5AF1CF50FEB2DDD24045D4DC /* Pods */ = {
6963
isa = PBXGroup;
7064
children = (
71-
8A014A7A90898F823F3D4B3D /* Pods-Runner.debug.xcconfig */,
72-
923A943AD1A8668FF24F5D59 /* Pods-Runner.release.xcconfig */,
73-
07F1C45CAB683E2489041B44 /* Pods-Runner.profile.xcconfig */,
7465
);
7566
path = Pods;
7667
sourceTree = "<group>";
7768
};
78-
8B326F84B2536FFF50DFEFD3 /* Frameworks */ = {
79-
isa = PBXGroup;
80-
children = (
81-
185FF648C8C3525E10052A2C /* libPods-Runner.a */,
82-
);
83-
name = Frameworks;
84-
sourceTree = "<group>";
85-
};
8669
9740EEB11CF90186004384FC /* Flutter */ = {
8770
isa = PBXGroup;
8871
children = (
@@ -103,7 +86,6 @@
10386
97C146F01CF9000F007C117D /* Runner */,
10487
97C146EF1CF9000F007C117D /* Products */,
10588
5AF1CF50FEB2DDD24045D4DC /* Pods */,
106-
8B326F84B2536FFF50DFEFD3 /* Frameworks */,
10789
);
10890
sourceTree = "<group>";
10991
};
@@ -137,15 +119,13 @@
137119
isa = PBXNativeTarget;
138120
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
139121
buildPhases = (
140-
80DABC9846A6DDC8F0D21E5C /* [CP] Check Pods Manifest.lock */,
141122
9740EEB61CF901F6004384FC /* Run Script */,
142123
A7B8C9D0E1F2A3B4C5D6E7F8 /* SwiftLint */,
143124
97C146EA1CF9000F007C117D /* Sources */,
144125
97C146EB1CF9000F007C117D /* Frameworks */,
145126
97C146EC1CF9000F007C117D /* Resources */,
146127
9705A1C41CF9048500538489 /* Embed Frameworks */,
147128
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
148-
0B0823EF0E30F27C01C5808D /* [CP] Copy Pods Resources */,
149129
);
150130
buildRules = (
151131
);
@@ -211,23 +191,6 @@
211191
/* End PBXResourcesBuildPhase section */
212192

213193
/* Begin PBXShellScriptBuildPhase section */
214-
0B0823EF0E30F27C01C5808D /* [CP] Copy Pods Resources */ = {
215-
isa = PBXShellScriptBuildPhase;
216-
buildActionMask = 2147483647;
217-
files = (
218-
);
219-
inputFileListPaths = (
220-
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
221-
);
222-
name = "[CP] Copy Pods Resources";
223-
outputFileListPaths = (
224-
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
225-
);
226-
runOnlyForDeploymentPostprocessing = 0;
227-
shellPath = /bin/sh;
228-
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
229-
showEnvVarsInLog = 0;
230-
};
231194
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
232195
isa = PBXShellScriptBuildPhase;
233196
alwaysOutOfDate = 1;
@@ -244,28 +207,6 @@
244207
shellPath = /bin/sh;
245208
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
246209
};
247-
80DABC9846A6DDC8F0D21E5C /* [CP] Check Pods Manifest.lock */ = {
248-
isa = PBXShellScriptBuildPhase;
249-
buildActionMask = 2147483647;
250-
files = (
251-
);
252-
inputFileListPaths = (
253-
);
254-
inputPaths = (
255-
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
256-
"${PODS_ROOT}/Manifest.lock",
257-
);
258-
name = "[CP] Check Pods Manifest.lock";
259-
outputFileListPaths = (
260-
);
261-
outputPaths = (
262-
"$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
263-
);
264-
runOnlyForDeploymentPostprocessing = 0;
265-
shellPath = /bin/sh;
266-
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";
267-
showEnvVarsInLog = 0;
268-
};
269210
9740EEB61CF901F6004384FC /* Run Script */ = {
270211
isa = PBXShellScriptBuildPhase;
271212
alwaysOutOfDate = 1;

packages/example/pubspec.lock

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -454,10 +454,10 @@ packages:
454454
dependency: transitive
455455
description:
456456
name: matcher
457-
sha256: "12956d0ad8390bbcc63ca2e1469c0619946ccb52809807067a7020d57e647aa6"
457+
sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861
458458
url: "https://pub.dev"
459459
source: hosted
460-
version: "0.12.18"
460+
version: "0.12.19"
461461
material_color_utilities:
462462
dependency: transitive
463463
description:
@@ -470,10 +470,10 @@ packages:
470470
dependency: transitive
471471
description:
472472
name: meta
473-
sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394"
473+
sha256: "1741988757a65eb6b36abe716829688cf01910bbf91c34354ff7ec1c3de2b349"
474474
url: "https://pub.dev"
475475
source: hosted
476-
version: "1.17.0"
476+
version: "1.18.0"
477477
mime:
478478
dependency: transitive
479479
description:
@@ -611,10 +611,10 @@ packages:
611611
dependency: transitive
612612
description:
613613
name: test_api
614-
sha256: "93167629bfc610f71560ab9312acdda4959de4df6fac7492c89ff0d3886f6636"
614+
sha256: "949a932224383300f01be9221c39180316445ecb8e7547f70a41a35bf421fb9e"
615615
url: "https://pub.dev"
616616
source: hosted
617-
version: "0.7.9"
617+
version: "0.7.11"
618618
typed_data:
619619
dependency: transitive
620620
description:
@@ -656,5 +656,5 @@ packages:
656656
source: hosted
657657
version: "1.1.0"
658658
sdks:
659-
dart: ">=3.9.0 <4.0.0"
659+
dart: ">=3.10.0-0 <4.0.0"
660660
flutter: ">=3.35.0"
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
// swift-tools-version:5.9
2+
// The swift-tools-version declares the minimum version of Swift required to build this package.
3+
4+
// This Package.swift provides Swift Package Manager support for google_mlkit_barcode_scanning.
5+
// See: https://docs.flutter.dev/packages-and-plugins/swift-package-manager/for-plugin-authors
6+
7+
import PackageDescription
8+
9+
let package = Package(
10+
name: "google_mlkit_barcode_scanning",
11+
platforms: [
12+
.iOS("15.5")
13+
],
14+
products: [
15+
.library(
16+
name: "google_mlkit_barcode_scanning",
17+
targets: ["google_mlkit_barcode_scanning"])
18+
],
19+
dependencies: [
20+
.package(
21+
url: "https://github.com/d-date/google-mlkit-swiftpm",
22+
from: "9.0.0"
23+
)
24+
],
25+
targets: [
26+
.target(
27+
name: "google_mlkit_barcode_scanning",
28+
dependencies: [
29+
.product(name: "MLKitBarcodeScanning", package: "google-mlkit-swiftpm"),
30+
.product(name: "MLImage", package: "google-mlkit-swiftpm"),
31+
.product(name: "MLKitVision", package: "google-mlkit-swiftpm"),
32+
.product(name: "Common", package: "google-mlkit-swiftpm"),
33+
],
34+
path: "../Classes"
35+
)
36+
]
37+
)
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
// swift-tools-version:5.9
2+
// The swift-tools-version declares the minimum version of Swift required to build this package.
3+
4+
// This Package.swift provides Swift Package Manager support for google_mlkit_commons.
5+
// See: https://docs.flutter.dev/packages-and-plugins/swift-package-manager/for-plugin-authors
6+
7+
import PackageDescription
8+
9+
let package = Package(
10+
name: "google_mlkit_commons",
11+
platforms: [
12+
.iOS("15.5")
13+
],
14+
products: [
15+
.library(
16+
name: "google_mlkit_commons",
17+
targets: ["google_mlkit_commons"])
18+
],
19+
dependencies: [
20+
.package(
21+
url: "https://github.com/d-date/google-mlkit-swiftpm",
22+
from: "9.0.0"
23+
)
24+
],
25+
targets: [
26+
.target(
27+
name: "google_mlkit_commons",
28+
dependencies: [
29+
.product(name: "MLKitVision", package: "google-mlkit-swiftpm"),
30+
.product(name: "MLImage", package: "google-mlkit-swiftpm"),
31+
.product(name: "Common", package: "google-mlkit-swiftpm"),
32+
],
33+
path: "../Classes"
34+
)
35+
]
36+
)
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
// swift-tools-version:5.9
2+
// The swift-tools-version declares the minimum version of Swift required to build this package.
3+
4+
// This Package.swift provides Swift Package Manager support for google_mlkit_digital_ink_recognition.
5+
// See: https://docs.flutter.dev/packages-and-plugins/swift-package-manager/for-plugin-authors
6+
7+
import PackageDescription
8+
9+
let package = Package(
10+
name: "google_mlkit_digital_ink_recognition",
11+
platforms: [
12+
.iOS("15.5")
13+
],
14+
products: [
15+
.library(
16+
name: "google_mlkit_digital_ink_recognition",
17+
targets: ["google_mlkit_digital_ink_recognition"])
18+
],
19+
dependencies: [
20+
.package(
21+
url: "https://github.com/d-date/google-mlkit-swiftpm",
22+
from: "9.0.0"
23+
)
24+
],
25+
targets: [
26+
.target(
27+
name: "google_mlkit_digital_ink_recognition",
28+
dependencies: [
29+
.product(name: "MLKitDigitalInkRecognition", package: "google-mlkit-swiftpm"),
30+
.product(name: "MLKitVision", package: "google-mlkit-swiftpm"),
31+
.product(name: "MLImage", package: "google-mlkit-swiftpm"),
32+
.product(name: "Common", package: "google-mlkit-swiftpm"),
33+
],
34+
path: "../Classes"
35+
)
36+
]
37+
)
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
// swift-tools-version:5.9
2+
// The swift-tools-version declares the minimum version of Swift required to build this package.
3+
4+
// This Package.swift provides Swift Package Manager support for google_mlkit_document_scanner.
5+
// See: https://docs.flutter.dev/packages-and-plugins/swift-package-manager/for-plugin-authors
6+
7+
import PackageDescription
8+
9+
let package = Package(
10+
name: "google_mlkit_document_scanner",
11+
platforms: [
12+
.iOS("15.5")
13+
],
14+
products: [
15+
.library(
16+
name: "google_mlkit_document_scanner",
17+
targets: ["google_mlkit_document_scanner"])
18+
],
19+
dependencies: [
20+
.package(
21+
url: "https://github.com/d-date/google-mlkit-swiftpm",
22+
from: "9.0.0"
23+
)
24+
],
25+
targets: [
26+
.target(
27+
name: "google_mlkit_document_scanner",
28+
dependencies: [
29+
.product(name: "MLKitDocumentScanner", package: "google-mlkit-swiftpm"),
30+
.product(name: "MLKitVision", package: "google-mlkit-swiftpm"),
31+
.product(name: "MLImage", package: "google-mlkit-swiftpm"),
32+
.product(name: "Common", package: "google-mlkit-swiftpm"),
33+
],
34+
path: "../Classes"
35+
)
36+
]
37+
)
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
// swift-tools-version:5.9
2+
// The swift-tools-version declares the minimum version of Swift required to build this package.
3+
4+
// This Package.swift provides Swift Package Manager support for google_mlkit_entity_extraction.
5+
// See: https://docs.flutter.dev/packages-and-plugins/swift-package-manager/for-plugin-authors
6+
7+
import PackageDescription
8+
9+
let package = Package(
10+
name: "google_mlkit_entity_extraction",
11+
platforms: [
12+
.iOS("15.5")
13+
],
14+
products: [
15+
.library(
16+
name: "google_mlkit_entity_extraction",
17+
targets: ["google_mlkit_entity_extraction"])
18+
],
19+
dependencies: [
20+
.package(
21+
url: "https://github.com/d-date/google-mlkit-swiftpm",
22+
from: "9.0.0"
23+
)
24+
],
25+
targets: [
26+
.target(
27+
name: "google_mlkit_entity_extraction",
28+
dependencies: [
29+
.product(name: "MLKitEntityExtraction", package: "google-mlkit-swiftpm"),
30+
.product(name: "MLKitVision", package: "google-mlkit-swiftpm"),
31+
.product(name: "MLImage", package: "google-mlkit-swiftpm"),
32+
.product(name: "Common", package: "google-mlkit-swiftpm"),
33+
],
34+
path: "../Classes"
35+
)
36+
]
37+
)

0 commit comments

Comments
 (0)