fix(packaging): iOS privacy manifest, JNA ≥5.15, plist version truth (V2-642, V2-652) - #222
Conversation
… >=5.15 + plist version truth - V2-642: PrivacyInfo.xcprivacy embedded into each framework slice by build-swift.sh (flat bundles: root; macOS: Versions/A/Resources). The binary links required-reason APIs (stat/fstat -> FileTimestamp C617.1, statvfs -> DiskSpace 85F4.1) so consumer App Store uploads would be rejected with ITMS-91053 without it. No data collection, no tracking. - V2-652: JNA 5.14.0 -> 5.17.0 (android @aar + kotlin JVM) -- 5.14's x86_64 libjnidispatch.so is 4KB-aligned and crashes 16KB-page targets. - V2-658 residual: Info.plist CFBundleShortVersionString now derived from the ant-ffi crate version instead of hardcoded 0.2.0. Validated: bash -n, plutil -lint on the manifest, version extraction, jna-5.17.0.aar confirmed present on Maven Central. Full artifact validation happens at the 0.0.8 release build. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Hermes review — ant-sdk PR #222Head: What this PR does
Verified locally
Non-blocking caveat — no CI ran on this branch
None under This means the three fixes ship with zero automated verification. Locally:
Suggestion (non-blocking for this PR): add a follow-up PR to
Until that lands, the release-checklist eyeball the PR body mentions is the only verification — which is fine for a one-off 0.0.8 cut but should not become permanent. RecommendationApprove — the three fixes are individually correct (privacy manifest is well-formed, JNA pin is real on Maven Central, version extraction mechanism + fail-fast are sound) and the absence of CI is a tooling gap rather than a code defect. File the CI-coverage follow-up separately. — Hermes Agent (panel review for #222 of the 0.0.8 break-window bundle) |
|
The CI-coverage gap is folded into V2-651 (the PR-CI ticket) as a scope comment: extend triggers to |
Packaging slice of the 0.0.8 bundle (milestone ②) — store-gate fixes. Independent of #219/#220/#221.
V2-642 — iOS privacy manifest (ITMS-91053 store gate)
build-swift.shnow embeds aPrivacyInfo.xcprivacyinto every framework slice (flat iOS/simulator bundles at the root, macOS underVersions/A/Resources). The shipped binary links required-reason APIs —nmshowsstat/fstat(→ FileTimestamp, reason C617.1: files inside the app container) andstatvfs(→ DiskSpace, reason 85F4.1: the sufficient-disk-space pre-flight behindInsufficientDiskSpace). Without the manifest, every consumer app's App Store upload gets rejected. Declares no data collection and no tracking. Manifest isplutil -lintclean.V2-652 — JNA ≥5.15 (16KB-page crash)
net.java.dev.jna:jna5.14.0 → 5.17.0 inffi/android(@aar — the one that ships) andffi/kotlin(JVM, kept in lockstep). 5.14's x86_64libjnidispatch.sois 4KB-aligned and crashes on 16KB-page devices/emulator images (Play compliance requirement).jna-5.17.0.aarconfirmed live on Maven Central.V2-658 residual — plist version truth
CFBundleShortVersionStringwas hardcoded0.2.0; now derived from the ant-ffi crate version at build time (with a fail-fast if unreadable). Pairs with #221's crate-version reconcile to0.0.8— after both merge, the framework plist reports the real SDK version.Validation
bash -nclean, manifestplutil -lintOK, version extraction tested. These are release-pipeline changes — the full artifact proof (manifest present in slices, JNA alignment, plist version) lands with the first 0.0.8 release build, which the release checklist should eyeball.Holding merge pending review + Nic's go-ahead.
🤖 Generated with Claude Code