Skip to content

9.0.1

Choose a tag to compare

@d-date d-date released this 22 Sep 23:55
· 7 commits to main since this release

Repackages upstream Google ML Kit 9.0.0. No ML Kit version change — every
fix here is in this wrapper.

This is the first release where text recognition, pose detection and selfie
segmentation work at all, where a single product can be adopted without
undefined symbols, where the Simulator works on Apple Silicon, and where App
Store Connect accepts the upload.

Fixed

Issue What was wrong
#106, #109 Text recognition never worked. LatinOCRResources.bundle and nine other model bundles were never published — every OCR model, both pose detection models and both selfie segmentation models. TextRecognizer threw MLKTextRecognizerInternalErrorCreationFailure, "Invalid model path.". 18 bundles now ship, up from one.
#110 A single product could not be adopted. Seven .library products omitted a transitive framework, so adopting one on its own gave undefined symbols (_OBJC_CLASS_$_MLKXenoDetectorBase and friends).
#112 No arm64 iOS Simulator slice. Xcode 26 dropped Rosetta simulators, so the package was unusable in the Simulator on Apple Silicon. The slice is now synthesised from the device slice; remove any EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64 you added.
#102 ITMS-91065: Missing signature on upload. GoogleToolboxForMac and SSZipArchive now ship as library-type XCFrameworks, which are linked and never embedded, so Apple's scanner has nothing to ask about.
#99 Missing dSYMs — expected, and now documented in the README.

Also fixed, unreported: MLKitNaturalLanguage shipped an Info.plist with no
MinimumOSVersion, CFBundleSupportedPlatforms or
UIRequiredDeviceCapabilities, so nobody using the language APIs could
upload a build
(App Store Connect errors 90530 and 90208). Framework binaries
that were bare Mach-O objects are now ar archives, so Xcode links them
statically instead of relinking them into dead-stripped dylibs.

Upgrading

.package(url: "https://github.com/d-date/google-mlkit-swiftpm", from: "9.0.1")

9.0.0-1 was a SemVer pre-release, which from: "9.0.0" never selects. 9.0.1
reaches existing consumers.

Two steps are still required and still manual:

  • -ObjC and -all_load in Other Linker Flags.
  • The resource bundles for your modules. Swift Package Manager cannot carry
    them inside a binary target. ./scripts/download_bundles.sh 9.0.1 fetches
    them all; the README lists which module needs which.

Verified

  • ML Kit runs on the arm64 Simulator: text recognition reads rendered text,
    barcode scanning round-trips a Code 128, language identification returns de
  • The Example app launches on the Simulator and archives for device with every
    model bundle present and nothing linked dynamically
  • All 30 XCFrameworks carry ios-arm64_x86_64-simulator
  • An App Store Connect upload passed Apple's validation with no errors and
    reached VALID

🤖 Generated with Claude Code