docs(watchos): arm64 vs arm64_32 device builds + App Store publishing#5063
Conversation
The watchOS platform page predated arm64 device support (#5060) and claimed `--target watchos` produces arm64_32. Correct and expand it: - Architecture matrix: watchos = arm64 (S9+/watchOS 26) by default, arm64_32 (Series 4-8/SE) via PERRY_WATCHOS_ARM64_32; sim is arm64-only. - Device builds are tier-3: build perry-runtime/-ui-watchos from source with nightly -Z build-std + PERRY_RUNTIME_DIR (rustup target add only covers the simulator). - Build env vars (PERRY_WATCHOS_ARM64_32 / _MIN / PERRY_ENTRY_SYMBOL) and the rust-objcopy-crashes-on-arm64_32 workaround. - App rendering modes (default UI tree vs watchos-swift-app / -game-loop). - Contributor note: 32-bit usize portability in perry-runtime. New page platforms/watchos-app-store.md: the fat arm64+arm64_32 binary, the required iOS-stub wrapper for watch-only apps, the WKWatchOnly / ITSWatchOnlyContainer / arch+minOS validation rules, the arm64-only/ minOS-27 processing stall, signing, Transporter upload, and devicectl development install (Developer Mode + DDI).
|
Caution Review failedPull request was closed or merged during review 📝 WalkthroughWalkthroughThis PR adds comprehensive documentation for publishing watchOS apps to the Apple App Store and expands the existing watchOS development guide. A new guide covers App Store architecture validation, binary building, iOS stub wrapper requirements, signing, and upload procedures. The watchOS guide is enhanced with detailed build setup instructions and documentation of feature-flagged rendering modes. ChangeswatchOS App Store Publishing Documentation
🎯 2 (Simple) | ⏱️ ~8 minutes
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
Documents the watchOS targeting and publishing knowledge from the arm64_32 work (#5060) and shipping a real watch-only app.
platforms/watchos.md (corrected + expanded)
The page predated arm64 device support and claimed
--target watchosproduces arm64_32. Now:watchos= arm64 (Series 9+/watchOS 26) by default; arm64_32 (Series 4-8/SE) viaPERRY_WATCHOS_ARM64_32=1; simulator is arm64-only and can't run arm64_32 binaries.perry-runtime/perry-ui-watchosfrom source with nightly-Z build-std+PERRY_RUNTIME_DIR(the oldrustup target add arm64_32-apple-watchosonly helps the simulator).PERRY_WATCHOS_ARM64_32,PERRY_WATCHOS_MIN,PERRY_ENTRY_SYMBOL, plus therust-objcopyMachOWriter crash on arm64_32 and why we emit the entry symbol directly.watchos-swift-app/watchos-game-loop.usizeportability rule forperry-runtime(compare pointer guards inu64).platforms/watchos-app-store.md (new)
Pure tribal knowledge, reverse-engineered from validation errors:
WKWatchOnly,ITSWatchOnlyContainer,LSApplicationLaunchProhibited).liporecipe, signing, Transporter upload (altool can't), anddevicectldevelopment install (Developer Mode + DDI mount).Linked under the watchOS entry in SUMMARY.md.
Summary by CodeRabbit