feature/xcodegen-modernize-runner
md 49 lines 2.12 KB
Rendered Raw
1 # Platform runners
2
3 All native runners live in a **single Xcode project**,
4 `XCRSControlKitRunner.xcodeproj`, generated from `project.yml` with
5 [XcodeGen](https://github.com/yonaskolb/XcodeGen). Each Apple platform has its
6 own application and UI-test targets plus a matching scheme, while the transport
7 and RPC logic are shared.
8
9 ```text
10 Runners/
11 ├── project.yml # XcodeGen spec (source of truth)
12 ├── XCRSControlKitRunner.xcodeproj # generated; do not hand-edit
13 ├── Shared/ # transport + RPC server, shared by all targets
14 │ ├── ControlKitRPCServer.swift
15 │ └── ControlKitRunnerUITests.swift
16 ├── iOS/ # iOS / iPadOS host app + assets
17 ├── tvOS/ # tvOS host app + assets
18 ├── visionOS/ # visionOS host app + assets
19 ├── macOS/ # macOS host app + assets
20 └── watchOS/ # watchOS host app + assets
21 ```
22
23 ## Targets and schemes
24
25 | Scheme | App target | UI-test target | Platform |
26 |---|---|---|---|
27 | `ControlKit-iOS` | `ControlKit-iOS` | `ControlKit-iOS-UITests` | iOS / iPadOS |
28 | `ControlKit-tvOS` | `ControlKit-tvOS` | `ControlKit-tvOS-UITests` | tvOS |
29 | `ControlKit-visionOS` | `ControlKit-visionOS` | `ControlKit-visionOS-UITests` | visionOS |
30 | `ControlKit-macOS` | `ControlKit-macOS` | `ControlKit-macOS-UITests` | macOS |
31 | `ControlKit-watchOS` | `ControlKit-watchOS` | `ControlKit-watchOS-UITests` | watchOS |
32
33 Each UI-test target compiles the shared `Shared/` sources for its platform, so
34 platform behaviour is selected at compile time via `#if os(...)` in
35 `ControlKitRPCServer.swift`. Per-platform bundle identifiers, device families,
36 app icons, and deployment targets keep signing and packaging independent.
37
38 ## Regenerating the project
39
40 After editing `project.yml` (or adding a platform folder), regenerate:
41
42 ```sh
43 brew install xcodegen # once
44 cd Runners
45 xcodegen generate
46 ```
47
48 The generated `.xcodeproj` is committed so contributors without XcodeGen can
49 still open and build the runners; only structural changes require regeneration.