chore: revert iOS pose to Vision (v4.15.1)
v4.15.0 shipped with MLKit-on-iOS via cinterop static archives, but MLKit
needs its resource bundles (~9 MB of .tflite/.binarypb weights) inside the
consumer's app bundle AND needs -ObjC at the consumer's app link step AND
needs a dynamic KMP framework. There's no KMP distribution mechanism to
flow native framework resources through a klib into a downstream app
bundle without consumer-side Gradle/Xcode setup. Shipping as-is forced
every downstream consumer to add a Run Script build phase, OTHER_LDFLAGS
entry, and change isStatic=false — violating the "just bump the version"
contract.
Fix: iosArm64's MlKitPose stubs isAvailable()=false (matching simulator
targets); FrameProcessor falls back to Apple Vision uniformly. Removed
the sync-mlkit.sh Gradle plumbing and the MLKit cinterop config.
All other v4.15.0 improvements are preserved:
- Orientation fixes (independent of pose backend)
- Object detection fixes (VNImageRequestHandler orientation-ctor bug)
- Crisp solid overlay rendering
- Split object/pose EXIF infrastructure
- Skeleton.leftHeel/leftToe/leftIndex fields on Android (MLKit provides
them); iOS Vision leaves those fields null
Future MLKit-on-iOS revival would need to ship as a pre-built XCFramework
distributed via SPM or a Gradle plugin that auto-embeds into the
consumer's iOS app — out of scope here.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>