mirror of
https://github.com/block/buzz.git
synced 2026-10-28 04:51:40 +00:00
docs(ios): document Xcode 27 development setup (#8400)
Document Xcode 27.0 as the recommended iOS development toolchain while retaining Xcode 26 compatibility. Explain per-command selection, the known Flutter native-assets compiler/SDK mismatch on hosts with multiple Xcode versions, and where CI and release toolchains are configured. The compatibility changes are already merged in [#8379](https://github.com/block/buzz/pull/8379) and [#8398](https://github.com/block/buzz/pull/8398). Related open work is [#8330](https://github.com/block/buzz/pull/8330); this PR changes documentation only. The release version bump remains separate in [buzz-releases#110](https://github.com/squareup/buzz-releases/pull/110). ### Validation - Ordinary unsigned Release build passed on [main at73962435b](73962435b6) with exact Xcode 27.0 (27A266a), the pinned Flutter SDK, and normal CocoaPods installation. Buzz.app contains NotificationService.appex. No dependency patches or plugin-validation bypasses were used. - The merged direct-C change passed native tests on Xcode 26.5 and 27.0, full local CI, and hosted Native and unsigned Release validation. This documentation-only follow-up preserves that code. - Documentation diff checks and local pre-push checks passed. --------- Signed-off-by: Tom Brow <tomb@block.xyz>
This commit is contained in:
@@ -84,6 +84,7 @@ We review as capacity allows — focused PRs that follow this guide move fastest
|
||||
| Node.js | 24+ | Required for desktop app commands and `just ci` |
|
||||
| pnpm | 10+ | Required for desktop app commands and `just ci` |
|
||||
| Flutter | 3.41+ | Required for mobile app — install via [flutter.dev](https://docs.flutter.dev/get-started/install) |
|
||||
| Xcode | 27.0 recommended; 26 supported | Required for iOS builds; see [iOS toolchain setup](mobile/README.md#ios-toolchain) |
|
||||
| Docker | 24+ | For Postgres, Redis, MinIO |
|
||||
| `just` | latest | Task runner — `cargo install just` |
|
||||
| `lefthook` | 2.1.3 (Hermit-pinned) | Auto-installed by `just hooks` — no manual install needed |
|
||||
|
||||
@@ -21,6 +21,34 @@ external Flutter SDK has touched `mobile/.dart_tool`, rerun `mobile-install`
|
||||
with the pinned SDK before building so `flutter_test`, `sky_engine`, and the
|
||||
engine all come from the same Flutter version.
|
||||
|
||||
### iOS toolchain
|
||||
|
||||
Use Xcode 27.0 for iOS development and build validation on an Apple silicon
|
||||
Mac running macOS Tahoe 26.6 or later, as required by the
|
||||
[Xcode 27 release notes](https://developer.apple.com/documentation/xcode-release-notes/xcode-27-release-notes).
|
||||
On Intel Macs or hosts that cannot meet those requirements, use a compatible
|
||||
Xcode 26 version, which remains supported. Activate the repository's pinned
|
||||
Flutter SDK with Hermit as described above.
|
||||
|
||||
When multiple Xcode versions are installed, select the intended version for
|
||||
the command with `DEVELOPER_DIR`, for example:
|
||||
|
||||
```bash
|
||||
DEVELOPER_DIR=/Applications/Xcode-27.0.0.app/Contents/Developer xcodebuild -version
|
||||
```
|
||||
|
||||
Adjust the path to your installation. Keep the compiler and SDK from the same
|
||||
Xcode installation. The pinned Flutter native-assets tooling can discover the
|
||||
globally selected SDK even when `DEVELOPER_DIR` selects another compiler, so
|
||||
use a build machine with a matching default Xcode when validating either
|
||||
Xcode 26 or Xcode 27.
|
||||
|
||||
The native cryptography dependency is pinned upstream C source in
|
||||
`ios/BuzzPushKit/Sources/CSecp256k1`; it requires no Swift build-plugin approval.
|
||||
GitHub's mobile CI currently uses the Xcode default of its `macos-latest`
|
||||
runner. The internal release toolchain is configured separately in
|
||||
[buzz-releases](https://github.com/squareup/buzz-releases).
|
||||
|
||||
## Run
|
||||
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user