Use one xcode project for all platforms
Seto Elkahfi committed
Jul 30, 2026 at 19:15 UTC
d0a5f4c0cc72147c1f1c038acef4c524328c6df9
29 files changed
+1537
-1142
README.md
+14
-12
@@ -22,7 +22,7 @@ Add the package URL to an Xcode project or Swift package:
22
23
```swift
24
dependencies: [
25
- .package(url: "https://github.com/smbcloudXYZ/xcrs-controlkit.git", from: "0.1.0")
25
+ .package(url: "https://github.com/ondeinference/xcrs-controlkit.git", from: "0.1.0")
26
]
27
```
28
@@ -39,25 +39,27 @@ if capabilities.supports(.remoteButtons) {
39
40
## Runner projects
41
42
-Runner implementations belong outside the Swift package target:
42
+Runner implementations belong outside the Swift package target. All platforms
43
+share one Xcode project generated with XcodeGen:
44
45
```text
46
Runners/
46
-├── iOS/
47
-├── tvOS/
48
-├── watchOS/
49
-├── visionOS/
50
-└── macOS/
47
+├── project.yml # XcodeGen spec
48
+├── XCRSControlKitRunner.xcodeproj # one project, per-platform targets/schemes
49
+├── Shared/ # transport + RPC server
50
+├── iOS/ # iOS / iPadOS host app
51
+├── tvOS/ # tvOS host app
52
+└── visionOS/ # visionOS host app
53
```
54
53
-Each runner can import `XCRSControlKit` while using the appropriate Apple
54
-frameworks and Xcode test target for its platform.
55
+Each platform gets its own application and UI-test targets and a matching
56
+scheme (`ControlKit-iOS`, `ControlKit-tvOS`, `ControlKit-visionOS`) while
57
+importing `XCRSControlKit` and sharing the transport. See `Runners/README.md`.
58
59
## Status
60
58
-The package currently provides the public cross-platform contract. Native
59
-runner projects and transport implementations are being added incrementally,
60
-starting with iOS and tvOS.
61
+The package provides the public cross-platform contract. Native ControlKit
62
+runners currently support iOS, iPadOS, tvOS, and visionOS.
63
64
## License
65
Runners/README.md
+42
-5
@@ -1,8 +1,45 @@
1
# Platform runners
2
3
-Platform runners are separate Xcode projects rather than SwiftPM targets.
4
-They import the local `XCRSControlKit` package and expose XCTest or
5
-XCUITest-specific automation over the runner transport.
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
7
-Use one project per Apple platform so each runner can define its own schemes,
8
-host app, deployment target, signing configuration, and platform capabilities.
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
+```
20
+
21
+## Targets and schemes
22
+
23
+| Scheme | App target | UI-test target | Platform |
24
+|---|---|---|---|
25
+| `ControlKit-iOS` | `ControlKit-iOS` | `ControlKit-iOS-UITests` | iOS / iPadOS |
26
+| `ControlKit-tvOS` | `ControlKit-tvOS` | `ControlKit-tvOS-UITests` | tvOS |
27
+| `ControlKit-visionOS` | `ControlKit-visionOS` | `ControlKit-visionOS-UITests` | visionOS |
28
+
29
+Each UI-test target compiles the shared `Shared/` sources for its platform, so
30
+platform behaviour is selected at compile time via `#if os(...)` in
31
+`ControlKitRPCServer.swift`. Per-platform bundle identifiers, device families,
32
+app icons, and deployment targets keep signing and packaging independent.
33
+
34
+## Regenerating the project
35
+
36
+After editing `project.yml` (or adding a platform folder), regenerate:
37
+
38
+```sh
39
+brew install xcodegen # once
40
+cd Runners
41
+xcodegen generate
42
+```
43
+
44
+The generated `.xcodeproj` is committed so contributors without XcodeGen can
45
+still open and build the runners; only structural changes require regeneration.
Runners/Shared/ControlKitRPCServer.swift
renamed
+37
-16
@@ -76,6 +76,8 @@ final class ControlKitRPCServer {
76
let platform: XCRSControlKitPlatform = {
77
#if os(tvOS)
78
return .tvOS
79
+ #elseif os(visionOS)
80
+ return .visionOS
81
#else
82
return .iOS
83
#endif
@@ -102,22 +104,19 @@ final class ControlKitRPCServer {
104
XCUIApplication(bundleIdentifier: bundleIdentifier).terminate()
105
return try response(result: ["success": true], id: request.id)
106
case "device.io.tap":
105
- #if os(tvOS)
106
- throw RunnerError.unsupportedButton("touch")
107
+ #if os(tvOS) || os(visionOS)
108
+ throw RunnerError.unsupportedInteraction("touch")
109
#else
108
- let x = try doubleParameter("x", request.params)
109
- let y = try doubleParameter("y", request.params)
110
- let application = foregroundApplication(request.params)
111
- let frame = application.frame
112
- let coordinate = application.coordinate(
113
- withNormalizedOffset: CGVector(
114
- dx: max(0, min(1, x / Double(frame.width))),
115
- dy: max(0, min(1, y / Double(frame.height)))
116
- )
117
- )
118
- coordinate.tap()
110
+ try tap(request.params)
111
return try response(result: ["success": true], id: request.id)
112
#endif
113
+ case "device.io.spatial.tap":
114
+ #if os(visionOS)
115
+ try tap(request.params)
116
+ return try response(result: ["success": true], id: request.id)
117
+ #else
118
+ throw RunnerError.unsupportedInteraction("spatial tap")
119
+ #endif
120
case "device.io.text":
121
let text = try stringParameter("text", request.params)
122
foregroundApplication(request.params).typeText(text)
@@ -145,13 +144,16 @@ final class ControlKitRPCServer {
144
throw RunnerError.unsupportedButton(button)
145
}
146
XCUIRemote.shared.press(press)
148
- #else
147
+ return try response(result: ["success": true], id: request.id)
148
+ #elseif os(iOS)
149
guard button == "home" else {
150
throw RunnerError.unsupportedButton(button)
151
}
152
XCUIDevice.shared.press(.home)
153
- #endif
153
return try response(result: ["success": true], id: request.id)
154
+ #else
155
+ throw RunnerError.unsupportedButton(button)
156
+ #endif
157
default:
158
return try response(error: -32601, message: "Method not found", id: request.id)
159
}
@@ -164,6 +166,22 @@ final class ControlKitRPCServer {
166
return XCUIApplication()
167
}
168
169
+ #if !os(tvOS)
170
+ private func tap(_ params: [String: Any]) throws {
171
+ let x = try doubleParameter("x", params)
172
+ let y = try doubleParameter("y", params)
173
+ let application = foregroundApplication(params)
174
+ let frame = application.frame
175
+ let coordinate = application.coordinate(
176
+ withNormalizedOffset: CGVector(
177
+ dx: max(0, min(1, x / Double(frame.width))),
178
+ dy: max(0, min(1, y / Double(frame.height)))
179
+ )
180
+ )
181
+ coordinate.tap()
182
+ }
183
+ #endif
184
+
185
private func stringParameter(_ name: String, _ params: [String: Any]) throws -> String {
186
guard let value = params[name] as? String, !value.isEmpty else {
187
throw RunnerError.invalidParameter(name)
@@ -256,13 +274,16 @@ private final class RPCHandler: ChannelInboundHandler {
274
private enum RunnerError: LocalizedError {
275
case invalidParameter(String)
276
case unsupportedButton(String)
277
+ case unsupportedInteraction(String)
278
279
var errorDescription: String? {
280
switch self {
281
case .invalidParameter(let name):
282
return "Missing or invalid parameter: \(name)"
283
case .unsupportedButton(let button):
265
- return "Unsupported iOS button: \(button)"
284
+ return "Unsupported button: \(button)"
285
+ case .unsupportedInteraction(let interaction):
286
+ return "Unsupported interaction: \(interaction)"
287
}
288
}
289
}
Runners/Shared/ControlKitRunnerUITests.swift
renamed
Runners/XCRSControlKitRunner.xcodeproj/project.pbxproj
new
+944
@@ -0,0 +1,944 @@
1
+// !$*UTF8*$!
2
+{
3
+ archiveVersion = 1;
4
+ classes = {
5
+ };
6
+ objectVersion = 77;
7
+ objects = {
8
+
9
+/* Begin PBXBuildFile section */
10
+ 0BF8E6E42A39CE747AD5ED5D /* ControlKitRunnerUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D582F818EB333BD812EBDAC7 /* ControlKitRunnerUITests.swift */; };
11
+ 0DFC449880A304B5154D7F6D /* XCRSControlKit in Frameworks */ = {isa = PBXBuildFile; productRef = BE99FEAB3F75651FC71BB9B5 /* XCRSControlKit */; };
12
+ 100DCE12F169B8A38E219931 /* ControlKitRPCServer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 976BFE251DB7DC2248C8D0E7 /* ControlKitRPCServer.swift */; };
13
+ 25622E0215D89F31880E6356 /* ControlKitRunnerUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D582F818EB333BD812EBDAC7 /* ControlKitRunnerUITests.swift */; };
14
+ 3CAE36F48F2BB14EC17B1A49 /* NIOHTTP1 in Frameworks */ = {isa = PBXBuildFile; productRef = 39DF23C6EF63909919D192E1 /* NIOHTTP1 */; };
15
+ 4D29102252109822A895B881 /* NIOPosix in Frameworks */ = {isa = PBXBuildFile; productRef = C9A26D0E7AB404E7BE27C778 /* NIOPosix */; };
16
+ 57C6D92B45E7092A5C2AD7D2 /* ControlKitRunnerApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FB5CFB03469D6F6B4B90338 /* ControlKitRunnerApp.swift */; };
17
+ 57E28C91935955E0FCA55C21 /* NIOCore in Frameworks */ = {isa = PBXBuildFile; productRef = 1EEBDB1A27DC2D28A6BB1B95 /* NIOCore */; };
18
+ 5C1F1D551479D29CA351EEF1 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E395E1A9D0B3259F9C816109 /* Assets.xcassets */; };
19
+ 673EB3CCA913F73C710B72B0 /* NIOCore in Frameworks */ = {isa = PBXBuildFile; productRef = 58494EA2BBD98AE84158250F /* NIOCore */; };
20
+ 6D60E555ABB299495F608B27 /* NIOPosix in Frameworks */ = {isa = PBXBuildFile; productRef = 2B7D7F431DC211BEDBFC374A /* NIOPosix */; };
21
+ 6F0CF3B6D51AEB5C4F3E1827 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 06ABEBF2BC26029BF199977C /* README.md */; };
22
+ 7CAF0B42FF68BF36CAC8C8CD /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8A09FB52496A952CB13C163B /* Assets.xcassets */; };
23
+ 7D3C77F9ABF4E0CD672DCEF5 /* NIOHTTP1 in Frameworks */ = {isa = PBXBuildFile; productRef = 84A03CA7B1A8BF405AD3F3C4 /* NIOHTTP1 */; };
24
+ 8F79A6E8A60191E7A095D2F2 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 3DFF0D230E8E7D8DF4E8AF86 /* README.md */; };
25
+ 93235E8B38222B9CC779ED84 /* XCRSControlKit in Frameworks */ = {isa = PBXBuildFile; productRef = 50AB05BF2C324210174A3476 /* XCRSControlKit */; };
26
+ 9540EFD6CC87D6DEF2FBFC0F /* ControlKitRPCServer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 976BFE251DB7DC2248C8D0E7 /* ControlKitRPCServer.swift */; };
27
+ 986705883AA98C348CFE6E72 /* XCRSControlKit in Frameworks */ = {isa = PBXBuildFile; productRef = 17A1603CDD0A79E07FAC7D43 /* XCRSControlKit */; };
28
+ 9DFD228E556F05433F75A568 /* NIOHTTP1 in Frameworks */ = {isa = PBXBuildFile; productRef = EE8C054B1BC0620402AEA51B /* NIOHTTP1 */; };
29
+ B2A57E383F93751851FE880C /* NIOCore in Frameworks */ = {isa = PBXBuildFile; productRef = F83D3AB07112BE3B5C5CEEB0 /* NIOCore */; };
30
+ B986DCE75E07965CA4C1E7F8 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = D11F41B613A58B56653C16C6 /* README.md */; };
31
+ BEFE1733DCB97BE06F428AD2 /* ControlKitRunnerApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 898E84DC2CE45F3463AA7E5D /* ControlKitRunnerApp.swift */; };
32
+ C0DC985C9D52F33FFB8943E8 /* ControlKitRPCServer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 976BFE251DB7DC2248C8D0E7 /* ControlKitRPCServer.swift */; };
33
+ C552103B6652E1005DB6B8C3 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1D9522A60419FFC7F405FE88 /* Assets.xcassets */; };
34
+ C8B2C54C0B06115DE7F14ACE /* ControlKitRunnerApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = A32F608A3A429B81416D59FC /* ControlKitRunnerApp.swift */; };
35
+ D96F5E268D3AFF7DC328622A /* ControlKitRunnerUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D582F818EB333BD812EBDAC7 /* ControlKitRunnerUITests.swift */; };
36
+ E7D00D2B9B79391ABB28574C /* NIOPosix in Frameworks */ = {isa = PBXBuildFile; productRef = FFAF906BB53F58598BDAE35B /* NIOPosix */; };
37
+/* End PBXBuildFile section */
38
+
39
+/* Begin PBXContainerItemProxy section */
40
+ 154A64286F9DFB5C95CF695E /* PBXContainerItemProxy */ = {
41
+ isa = PBXContainerItemProxy;
42
+ containerPortal = A886E2D8FDDF1B058227A931 /* Project object */;
43
+ proxyType = 1;
44
+ remoteGlobalIDString = 9F5E3C368E274D9C0BF1AC09;
45
+ remoteInfo = "ControlKit-iOS";
46
+ };
47
+ 30BC4151DCEA5E8BE24D8C93 /* PBXContainerItemProxy */ = {
48
+ isa = PBXContainerItemProxy;
49
+ containerPortal = A886E2D8FDDF1B058227A931 /* Project object */;
50
+ proxyType = 1;
51
+ remoteGlobalIDString = 720F3EC917A0116B593FBBBB;
52
+ remoteInfo = "ControlKit-visionOS";
53
+ };
54
+ AEE01B43669A92A0B635826C /* PBXContainerItemProxy */ = {
55
+ isa = PBXContainerItemProxy;
56
+ containerPortal = A886E2D8FDDF1B058227A931 /* Project object */;
57
+ proxyType = 1;
58
+ remoteGlobalIDString = 029C796A915A8119077A2F2D;
59
+ remoteInfo = "ControlKit-tvOS";
60
+ };
61
+/* End PBXContainerItemProxy section */
62
+
63
+/* Begin PBXFileReference section */
64
+ 06ABEBF2BC26029BF199977C /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
65
+ 08CFC4F37BB1C3444B435EC8 /* ControlKit-tvOS.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; name = "ControlKit-tvOS.app"; path = ControlKit.app; sourceTree = BUILT_PRODUCTS_DIR; };
66
+ 0AF2C936A45BEF3E427051E8 /* ControlKit-iOS.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; name = "ControlKit-iOS.app"; path = ControlKit.app; sourceTree = BUILT_PRODUCTS_DIR; };
67
+ 1D9522A60419FFC7F405FE88 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
68
+ 2A9F28238A4519F25B302BD1 /* ControlKit-visionOS.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; name = "ControlKit-visionOS.app"; path = ControlKit.app; sourceTree = BUILT_PRODUCTS_DIR; };
69
+ 3DFF0D230E8E7D8DF4E8AF86 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
70
+ 5A89F5048B0CAE4988FB1203 /* ControlKit-visionOS-UITests.xctest */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.cfbundle; path = "ControlKit-visionOS-UITests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
71
+ 5FB5CFB03469D6F6B4B90338 /* ControlKitRunnerApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ControlKitRunnerApp.swift; sourceTree = "<group>"; };
72
+ 898E84DC2CE45F3463AA7E5D /* ControlKitRunnerApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ControlKitRunnerApp.swift; sourceTree = "<group>"; };
73
+ 8A09FB52496A952CB13C163B /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
74
+ 904DF2F8A56B8FA1C5EE1431 /* ControlKit-tvOS-UITests.xctest */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.cfbundle; path = "ControlKit-tvOS-UITests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
75
+ 976BFE251DB7DC2248C8D0E7 /* ControlKitRPCServer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ControlKitRPCServer.swift; sourceTree = "<group>"; };
76
+ A32F608A3A429B81416D59FC /* ControlKitRunnerApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ControlKitRunnerApp.swift; sourceTree = "<group>"; };
77
+ D11F41B613A58B56653C16C6 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
78
+ D1DCCDE3A93E1CF31802D658 /* xcrs-controlkit */ = {isa = PBXFileReference; lastKnownFileType = folder; name = "xcrs-controlkit"; path = ..; sourceTree = SOURCE_ROOT; };
79
+ D582F818EB333BD812EBDAC7 /* ControlKitRunnerUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ControlKitRunnerUITests.swift; sourceTree = "<group>"; };
80
+ E395E1A9D0B3259F9C816109 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
81
+ F93B11596E43814F825966AC /* ControlKit-iOS-UITests.xctest */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.cfbundle; path = "ControlKit-iOS-UITests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
82
+/* End PBXFileReference section */
83
+
84
+/* Begin PBXFrameworksBuildPhase section */
85
+ 2A75581ED579005C72375AAB /* Frameworks */ = {
86
+ isa = PBXFrameworksBuildPhase;
87
+ buildActionMask = 2147483647;
88
+ files = (
89
+ 0DFC449880A304B5154D7F6D /* XCRSControlKit in Frameworks */,
90
+ B2A57E383F93751851FE880C /* NIOCore in Frameworks */,
91
+ 3CAE36F48F2BB14EC17B1A49 /* NIOHTTP1 in Frameworks */,
92
+ 4D29102252109822A895B881 /* NIOPosix in Frameworks */,
93
+ );
94
+ runOnlyForDeploymentPostprocessing = 0;
95
+ };
96
+ A2E874DC4FFAB2E95DCD1F03 /* Frameworks */ = {
97
+ isa = PBXFrameworksBuildPhase;
98
+ buildActionMask = 2147483647;
99
+ files = (
100
+ 986705883AA98C348CFE6E72 /* XCRSControlKit in Frameworks */,
101
+ 57E28C91935955E0FCA55C21 /* NIOCore in Frameworks */,
102
+ 7D3C77F9ABF4E0CD672DCEF5 /* NIOHTTP1 in Frameworks */,
103
+ 6D60E555ABB299495F608B27 /* NIOPosix in Frameworks */,
104
+ );
105
+ runOnlyForDeploymentPostprocessing = 0;
106
+ };
107
+ C3E100C6F6D5156EFA83374F /* Frameworks */ = {
108
+ isa = PBXFrameworksBuildPhase;
109
+ buildActionMask = 2147483647;
110
+ files = (
111
+ 93235E8B38222B9CC779ED84 /* XCRSControlKit in Frameworks */,
112
+ 673EB3CCA913F73C710B72B0 /* NIOCore in Frameworks */,
113
+ 9DFD228E556F05433F75A568 /* NIOHTTP1 in Frameworks */,
114
+ E7D00D2B9B79391ABB28574C /* NIOPosix in Frameworks */,
115
+ );
116
+ runOnlyForDeploymentPostprocessing = 0;
117
+ };
118
+/* End PBXFrameworksBuildPhase section */
119
+
120
+/* Begin PBXGroup section */
121
+ 0AD16B636A496FC575FABB2F /* Shared */ = {
122
+ isa = PBXGroup;
123
+ children = (
124
+ 976BFE251DB7DC2248C8D0E7 /* ControlKitRPCServer.swift */,
125
+ D582F818EB333BD812EBDAC7 /* ControlKitRunnerUITests.swift */,
126
+ );
127
+ path = Shared;
128
+ sourceTree = "<group>";
129
+ };
130
+ 18CD92B06EDA4B61503FE8DA /* visionOS */ = {
131
+ isa = PBXGroup;
132
+ children = (
133
+ 8A09FB52496A952CB13C163B /* Assets.xcassets */,
134
+ A32F608A3A429B81416D59FC /* ControlKitRunnerApp.swift */,
135
+ 06ABEBF2BC26029BF199977C /* README.md */,
136
+ );
137
+ path = visionOS;
138
+ sourceTree = "<group>";
139
+ };
140
+ 2D1B85549DE31AFEDF5D1159 /* Products */ = {
141
+ isa = PBXGroup;
142
+ children = (
143
+ F93B11596E43814F825966AC /* ControlKit-iOS-UITests.xctest */,
144
+ 0AF2C936A45BEF3E427051E8 /* ControlKit-iOS.app */,
145
+ 904DF2F8A56B8FA1C5EE1431 /* ControlKit-tvOS-UITests.xctest */,
146
+ 08CFC4F37BB1C3444B435EC8 /* ControlKit-tvOS.app */,
147
+ 5A89F5048B0CAE4988FB1203 /* ControlKit-visionOS-UITests.xctest */,
148
+ 2A9F28238A4519F25B302BD1 /* ControlKit-visionOS.app */,
149
+ );
150
+ name = Products;
151
+ sourceTree = "<group>";
152
+ };
153
+ 8BF319E1B3CB4CA319D804BA = {
154
+ isa = PBXGroup;
155
+ children = (
156
+ CEE9E165E43396ABDCF722E3 /* iOS */,
157
+ AAF9A6C2C031D435E78F618D /* Packages */,
158
+ 0AD16B636A496FC575FABB2F /* Shared */,
159
+ F3830AB6FA85799037B91E7D /* tvOS */,
160
+ 18CD92B06EDA4B61503FE8DA /* visionOS */,
161
+ 2D1B85549DE31AFEDF5D1159 /* Products */,
162
+ );
163
+ sourceTree = "<group>";
164
+ };
165
+ AAF9A6C2C031D435E78F618D /* Packages */ = {
166
+ isa = PBXGroup;
167
+ children = (
168
+ D1DCCDE3A93E1CF31802D658 /* xcrs-controlkit */,
169
+ );
170
+ name = Packages;
171
+ sourceTree = "<group>";
172
+ };
173
+ CEE9E165E43396ABDCF722E3 /* iOS */ = {
174
+ isa = PBXGroup;
175
+ children = (
176
+ E395E1A9D0B3259F9C816109 /* Assets.xcassets */,
177
+ 898E84DC2CE45F3463AA7E5D /* ControlKitRunnerApp.swift */,
178
+ D11F41B613A58B56653C16C6 /* README.md */,
179
+ );
180
+ path = iOS;
181
+ sourceTree = "<group>";
182
+ };
183
+ F3830AB6FA85799037B91E7D /* tvOS */ = {
184
+ isa = PBXGroup;
185
+ children = (
186
+ 1D9522A60419FFC7F405FE88 /* Assets.xcassets */,
187
+ 5FB5CFB03469D6F6B4B90338 /* ControlKitRunnerApp.swift */,
188
+ 3DFF0D230E8E7D8DF4E8AF86 /* README.md */,
189
+ );
190
+ path = tvOS;
191
+ sourceTree = "<group>";
192
+ };
193
+/* End PBXGroup section */
194
+
195
+/* Begin PBXNativeTarget section */
196
+ 029C796A915A8119077A2F2D /* ControlKit-tvOS */ = {
197
+ isa = PBXNativeTarget;
198
+ buildConfigurationList = F90CA1FF8DF178C6B4D2D56F /* Build configuration list for PBXNativeTarget "ControlKit-tvOS" */;
199
+ buildPhases = (
200
+ 764FCDFA07EA6064FF3C21DE /* Sources */,
201
+ A88C8E544C02C1D56E86A9C7 /* Resources */,
202
+ );
203
+ buildRules = (
204
+ );
205
+ dependencies = (
206
+ );
207
+ name = "ControlKit-tvOS";
208
+ packageProductDependencies = (
209
+ );
210
+ productName = "ControlKit-tvOS";
211
+ productReference = 08CFC4F37BB1C3444B435EC8 /* ControlKit-tvOS.app */;
212
+ productType = "com.apple.product-type.application";
213
+ };
214
+ 09F6B446FD034D1BCF7FE56B /* ControlKit-visionOS-UITests */ = {
215
+ isa = PBXNativeTarget;
216
+ buildConfigurationList = B47E47F03867048313ED0BC9 /* Build configuration list for PBXNativeTarget "ControlKit-visionOS-UITests" */;
217
+ buildPhases = (
218
+ 5FC626904619877E61D287BC /* Sources */,
219
+ A2E874DC4FFAB2E95DCD1F03 /* Frameworks */,
220
+ );
221
+ buildRules = (
222
+ );
223
+ dependencies = (
224
+ 55C3178DB2606813467C97CC /* PBXTargetDependency */,
225
+ );
226
+ name = "ControlKit-visionOS-UITests";
227
+ packageProductDependencies = (
228
+ 17A1603CDD0A79E07FAC7D43 /* XCRSControlKit */,
229
+ 1EEBDB1A27DC2D28A6BB1B95 /* NIOCore */,
230
+ 84A03CA7B1A8BF405AD3F3C4 /* NIOHTTP1 */,
231
+ 2B7D7F431DC211BEDBFC374A /* NIOPosix */,
232
+ );
233
+ productName = "ControlKit-visionOS-UITests";
234
+ productReference = 5A89F5048B0CAE4988FB1203 /* ControlKit-visionOS-UITests.xctest */;
235
+ productType = "com.apple.product-type.bundle.ui-testing";
236
+ };
237
+ 720F3EC917A0116B593FBBBB /* ControlKit-visionOS */ = {
238
+ isa = PBXNativeTarget;
239
+ buildConfigurationList = A3E875F2C0588D2AFB728EC8 /* Build configuration list for PBXNativeTarget "ControlKit-visionOS" */;
240
+ buildPhases = (
241
+ 25A5679D9AB0D84C081D9343 /* Sources */,
242
+ 23790115E256D87FAB658E0B /* Resources */,
243
+ );
244
+ buildRules = (
245
+ );
246
+ dependencies = (
247
+ );
248
+ name = "ControlKit-visionOS";
249
+ packageProductDependencies = (
250
+ );
251
+ productName = "ControlKit-visionOS";
252
+ productReference = 2A9F28238A4519F25B302BD1 /* ControlKit-visionOS.app */;
253
+ productType = "com.apple.product-type.application";
254
+ };
255
+ 8B29B60E49F265583C3FB987 /* ControlKit-tvOS-UITests */ = {
256
+ isa = PBXNativeTarget;
257
+ buildConfigurationList = DC1656DA116F4F1E1E7A9039 /* Build configuration list for PBXNativeTarget "ControlKit-tvOS-UITests" */;
258
+ buildPhases = (
259
+ 5132E84347A81C2E808C959B /* Sources */,
260
+ C3E100C6F6D5156EFA83374F /* Frameworks */,
261
+ );
262
+ buildRules = (
263
+ );
264
+ dependencies = (
265
+ F37FD1FE4F9670C2C355615F /* PBXTargetDependency */,
266
+ );
267
+ name = "ControlKit-tvOS-UITests";
268
+ packageProductDependencies = (
269
+ 50AB05BF2C324210174A3476 /* XCRSControlKit */,
270
+ 58494EA2BBD98AE84158250F /* NIOCore */,
271
+ EE8C054B1BC0620402AEA51B /* NIOHTTP1 */,
272
+ FFAF906BB53F58598BDAE35B /* NIOPosix */,
273
+ );
274
+ productName = "ControlKit-tvOS-UITests";
275
+ productReference = 904DF2F8A56B8FA1C5EE1431 /* ControlKit-tvOS-UITests.xctest */;
276
+ productType = "com.apple.product-type.bundle.ui-testing";
277
+ };
278
+ 9F5E3C368E274D9C0BF1AC09 /* ControlKit-iOS */ = {
279
+ isa = PBXNativeTarget;
280
+ buildConfigurationList = 42681BF128073F8CD1146052 /* Build configuration list for PBXNativeTarget "ControlKit-iOS" */;
281
+ buildPhases = (
282
+ 5AC070701AB330C954DC582E /* Sources */,
283
+ FE06AFC9AE7B730022308652 /* Resources */,
284
+ );
285
+ buildRules = (
286
+ );
287
+ dependencies = (
288
+ );
289
+ name = "ControlKit-iOS";
290
+ packageProductDependencies = (
291
+ );
292
+ productName = "ControlKit-iOS";
293
+ productReference = 0AF2C936A45BEF3E427051E8 /* ControlKit-iOS.app */;
294
+ productType = "com.apple.product-type.application";
295
+ };
296
+ CD73A40CAB68D297974A7E90 /* ControlKit-iOS-UITests */ = {
297
+ isa = PBXNativeTarget;
298
+ buildConfigurationList = 83E3FC025793339356561648 /* Build configuration list for PBXNativeTarget "ControlKit-iOS-UITests" */;
299
+ buildPhases = (
300
+ 47F2DEFAC8AF9B4172ECBF89 /* Sources */,
301
+ 2A75581ED579005C72375AAB /* Frameworks */,
302
+ );
303
+ buildRules = (
304
+ );
305
+ dependencies = (
306
+ 8DD5F5247778B29E6ABA8859 /* PBXTargetDependency */,
307
+ );
308
+ name = "ControlKit-iOS-UITests";
309
+ packageProductDependencies = (
310
+ BE99FEAB3F75651FC71BB9B5 /* XCRSControlKit */,
311
+ F83D3AB07112BE3B5C5CEEB0 /* NIOCore */,
312
+ 39DF23C6EF63909919D192E1 /* NIOHTTP1 */,
313
+ C9A26D0E7AB404E7BE27C778 /* NIOPosix */,
314
+ );
315
+ productName = "ControlKit-iOS-UITests";
316
+ productReference = F93B11596E43814F825966AC /* ControlKit-iOS-UITests.xctest */;
317
+ productType = "com.apple.product-type.bundle.ui-testing";
318
+ };
319
+/* End PBXNativeTarget section */
320
+
321
+/* Begin PBXProject section */
322
+ A886E2D8FDDF1B058227A931 /* Project object */ = {
323
+ isa = PBXProject;
324
+ attributes = {
325
+ BuildIndependentTargetsInParallel = YES;
326
+ LastUpgradeCheck = 1430;
327
+ TargetAttributes = {
328
+ 09F6B446FD034D1BCF7FE56B = {
329
+ TestTargetID = 720F3EC917A0116B593FBBBB;
330
+ };
331
+ 8B29B60E49F265583C3FB987 = {
332
+ TestTargetID = 029C796A915A8119077A2F2D;
333
+ };
334
+ CD73A40CAB68D297974A7E90 = {
335
+ TestTargetID = 9F5E3C368E274D9C0BF1AC09;
336
+ };
337
+ };
338
+ };
339
+ buildConfigurationList = 5DD1F1B919E5F8BC9E03021C /* Build configuration list for PBXProject "XCRSControlKitRunner" */;
340
+ developmentRegion = en;
341
+ hasScannedForEncodings = 0;
342
+ knownRegions = (
343
+ Base,
344
+ en,
345
+ );
346
+ mainGroup = 8BF319E1B3CB4CA319D804BA;
347
+ minimizedProjectReferenceProxies = 1;
348
+ packageReferences = (
349
+ 097CD02F3C7519204C9CDC73 /* XCRemoteSwiftPackageReference "swift-nio" */,
350
+ B1F1238966374497306EE6F6 /* XCLocalSwiftPackageReference ".." */,
351
+ );
352
+ preferredProjectObjectVersion = 77;
353
+ productRefGroup = 2D1B85549DE31AFEDF5D1159 /* Products */;
354
+ projectDirPath = "";
355
+ projectRoot = "";
356
+ targets = (
357
+ 9F5E3C368E274D9C0BF1AC09 /* ControlKit-iOS */,
358
+ CD73A40CAB68D297974A7E90 /* ControlKit-iOS-UITests */,
359
+ 029C796A915A8119077A2F2D /* ControlKit-tvOS */,
360
+ 8B29B60E49F265583C3FB987 /* ControlKit-tvOS-UITests */,
361
+ 720F3EC917A0116B593FBBBB /* ControlKit-visionOS */,
362
+ 09F6B446FD034D1BCF7FE56B /* ControlKit-visionOS-UITests */,
363
+ );
364
+ };
365
+/* End PBXProject section */
366
+
367
+/* Begin PBXResourcesBuildPhase section */
368
+ 23790115E256D87FAB658E0B /* Resources */ = {
369
+ isa = PBXResourcesBuildPhase;
370
+ buildActionMask = 2147483647;
371
+ files = (
372
+ 7CAF0B42FF68BF36CAC8C8CD /* Assets.xcassets in Resources */,
373
+ 6F0CF3B6D51AEB5C4F3E1827 /* README.md in Resources */,
374
+ );
375
+ runOnlyForDeploymentPostprocessing = 0;
376
+ };
377
+ A88C8E544C02C1D56E86A9C7 /* Resources */ = {
378
+ isa = PBXResourcesBuildPhase;
379
+ buildActionMask = 2147483647;
380
+ files = (
381
+ C552103B6652E1005DB6B8C3 /* Assets.xcassets in Resources */,
382
+ 8F79A6E8A60191E7A095D2F2 /* README.md in Resources */,
383
+ );
384
+ runOnlyForDeploymentPostprocessing = 0;
385
+ };
386
+ FE06AFC9AE7B730022308652 /* Resources */ = {
387
+ isa = PBXResourcesBuildPhase;
388
+ buildActionMask = 2147483647;
389
+ files = (
390
+ 5C1F1D551479D29CA351EEF1 /* Assets.xcassets in Resources */,
391
+ B986DCE75E07965CA4C1E7F8 /* README.md in Resources */,
392
+ );
393
+ runOnlyForDeploymentPostprocessing = 0;
394
+ };
395
+/* End PBXResourcesBuildPhase section */
396
+
397
+/* Begin PBXSourcesBuildPhase section */
398
+ 25A5679D9AB0D84C081D9343 /* Sources */ = {
399
+ isa = PBXSourcesBuildPhase;
400
+ buildActionMask = 2147483647;
401
+ files = (
402
+ C8B2C54C0B06115DE7F14ACE /* ControlKitRunnerApp.swift in Sources */,
403
+ );
404
+ runOnlyForDeploymentPostprocessing = 0;
405
+ };
406
+ 47F2DEFAC8AF9B4172ECBF89 /* Sources */ = {
407
+ isa = PBXSourcesBuildPhase;
408
+ buildActionMask = 2147483647;
409
+ files = (
410
+ C0DC985C9D52F33FFB8943E8 /* ControlKitRPCServer.swift in Sources */,
411
+ 0BF8E6E42A39CE747AD5ED5D /* ControlKitRunnerUITests.swift in Sources */,
412
+ );
413
+ runOnlyForDeploymentPostprocessing = 0;
414
+ };
415
+ 5132E84347A81C2E808C959B /* Sources */ = {
416
+ isa = PBXSourcesBuildPhase;
417
+ buildActionMask = 2147483647;
418
+ files = (
419
+ 100DCE12F169B8A38E219931 /* ControlKitRPCServer.swift in Sources */,
420
+ D96F5E268D3AFF7DC328622A /* ControlKitRunnerUITests.swift in Sources */,
421
+ );
422
+ runOnlyForDeploymentPostprocessing = 0;
423
+ };
424
+ 5AC070701AB330C954DC582E /* Sources */ = {
425
+ isa = PBXSourcesBuildPhase;
426
+ buildActionMask = 2147483647;
427
+ files = (
428
+ BEFE1733DCB97BE06F428AD2 /* ControlKitRunnerApp.swift in Sources */,
429
+ );
430
+ runOnlyForDeploymentPostprocessing = 0;
431
+ };
432
+ 5FC626904619877E61D287BC /* Sources */ = {
433
+ isa = PBXSourcesBuildPhase;
434
+ buildActionMask = 2147483647;
435
+ files = (
436
+ 9540EFD6CC87D6DEF2FBFC0F /* ControlKitRPCServer.swift in Sources */,
437
+ 25622E0215D89F31880E6356 /* ControlKitRunnerUITests.swift in Sources */,
438
+ );
439
+ runOnlyForDeploymentPostprocessing = 0;
440
+ };
441
+ 764FCDFA07EA6064FF3C21DE /* Sources */ = {
442
+ isa = PBXSourcesBuildPhase;
443
+ buildActionMask = 2147483647;
444
+ files = (
445
+ 57C6D92B45E7092A5C2AD7D2 /* ControlKitRunnerApp.swift in Sources */,
446
+ );
447
+ runOnlyForDeploymentPostprocessing = 0;
448
+ };
449
+/* End PBXSourcesBuildPhase section */
450
+
451
+/* Begin PBXTargetDependency section */
452
+ 55C3178DB2606813467C97CC /* PBXTargetDependency */ = {
453
+ isa = PBXTargetDependency;
454
+ target = 720F3EC917A0116B593FBBBB /* ControlKit-visionOS */;
455
+ targetProxy = 30BC4151DCEA5E8BE24D8C93 /* PBXContainerItemProxy */;
456
+ };
457
+ 8DD5F5247778B29E6ABA8859 /* PBXTargetDependency */ = {
458
+ isa = PBXTargetDependency;
459
+ target = 9F5E3C368E274D9C0BF1AC09 /* ControlKit-iOS */;
460
+ targetProxy = 154A64286F9DFB5C95CF695E /* PBXContainerItemProxy */;
461
+ };
462
+ F37FD1FE4F9670C2C355615F /* PBXTargetDependency */ = {
463
+ isa = PBXTargetDependency;
464
+ target = 029C796A915A8119077A2F2D /* ControlKit-tvOS */;
465
+ targetProxy = AEE01B43669A92A0B635826C /* PBXContainerItemProxy */;
466
+ };
467
+/* End PBXTargetDependency section */
468
+
469
+/* Begin XCBuildConfiguration section */
470
+ 05E1C3E341C64C4F40D8F6EF /* Release */ = {
471
+ isa = XCBuildConfiguration;
472
+ buildSettings = {
473
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
474
+ CODE_SIGN_IDENTITY = "iPhone Developer";
475
+ INFOPLIST_KEY_UIRequiresFullScreen = YES;
476
+ INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait;
477
+ LD_RUNPATH_SEARCH_PATHS = (
478
+ "$(inherited)",
479
+ "@executable_path/Frameworks",
480
+ );
481
+ PRODUCT_BUNDLE_IDENTIFIER = "com.smbcloud.xcrs-controlkit.ios.runner";
482
+ PRODUCT_NAME = ControlKit;
483
+ SDKROOT = iphoneos;
484
+ TARGETED_DEVICE_FAMILY = "1,2";
485
+ };
486
+ name = Release;
487
+ };
488
+ 21F4165C7F57458C04C5805E /* Debug */ = {
489
+ isa = XCBuildConfiguration;
490
+ buildSettings = {
491
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
492
+ CODE_SIGN_IDENTITY = "iPhone Developer";
493
+ INFOPLIST_KEY_UIRequiresFullScreen = YES;
494
+ INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait;
495
+ LD_RUNPATH_SEARCH_PATHS = (
496
+ "$(inherited)",
497
+ "@executable_path/Frameworks",
498
+ );
499
+ PRODUCT_BUNDLE_IDENTIFIER = "com.smbcloud.xcrs-controlkit.ios.runner";
500
+ PRODUCT_NAME = ControlKit;
501
+ SDKROOT = iphoneos;
502
+ TARGETED_DEVICE_FAMILY = "1,2";
503
+ };
504
+ name = Debug;
505
+ };
506
+ 2E51B9F5C20DD197F5FA4F07 /* Debug */ = {
507
+ isa = XCBuildConfiguration;
508
+ buildSettings = {
509
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
510
+ LD_RUNPATH_SEARCH_PATHS = (
511
+ "$(inherited)",
512
+ "@executable_path/Frameworks",
513
+ );
514
+ PRODUCT_BUNDLE_IDENTIFIER = "com.smbcloud.xcrs-controlkit.visionos.runner";
515
+ PRODUCT_NAME = ControlKit;
516
+ SDKROOT = xros;
517
+ TARGETED_DEVICE_FAMILY = 7;
518
+ };
519
+ name = Debug;
520
+ };
521
+ 41FF10163C9AB188CF4891AF /* Debug */ = {
522
+ isa = XCBuildConfiguration;
523
+ buildSettings = {
524
+ BUNDLE_LOADER = "$(TEST_HOST)";
525
+ LD_RUNPATH_SEARCH_PATHS = (
526
+ "$(inherited)",
527
+ "@executable_path/Frameworks",
528
+ "@loader_path/Frameworks",
529
+ );
530
+ PRODUCT_BUNDLE_IDENTIFIER = "com.smbcloud.xcrs-controlkit.visionos.runnerUITests";
531
+ SDKROOT = xros;
532
+ TARGETED_DEVICE_FAMILY = 7;
533
+ TEST_TARGET_NAME = "ControlKit-visionOS";
534
+ };
535
+ name = Debug;
536
+ };
537
+ 51FACD26B90FED54CC62D2FD /* Debug */ = {
538
+ isa = XCBuildConfiguration;
539
+ buildSettings = {
540
+ ALWAYS_SEARCH_USER_PATHS = NO;
541
+ CLANG_ANALYZER_NONNULL = YES;
542
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
543
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
544
+ CLANG_CXX_LIBRARY = "libc++";
545
+ CLANG_ENABLE_MODULES = YES;
546
+ CLANG_ENABLE_OBJC_ARC = YES;
547
+ CLANG_ENABLE_OBJC_WEAK = YES;
548
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
549
+ CLANG_WARN_BOOL_CONVERSION = YES;
550
+ CLANG_WARN_COMMA = YES;
551
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
552
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
553
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
554
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
555
+ CLANG_WARN_EMPTY_BODY = YES;
556
+ CLANG_WARN_ENUM_CONVERSION = YES;
557
+ CLANG_WARN_INFINITE_RECURSION = YES;
558
+ CLANG_WARN_INT_CONVERSION = YES;
559
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
560
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
561
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
562
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
563
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
564
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
565
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
566
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
567
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
568
+ CLANG_WARN_UNREACHABLE_CODE = YES;
569
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
570
+ COPY_PHASE_STRIP = NO;
571
+ DEBUG_INFORMATION_FORMAT = dwarf;
572
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
573
+ ENABLE_TESTABILITY = YES;
574
+ GCC_C_LANGUAGE_STANDARD = gnu11;
575
+ GCC_DYNAMIC_NO_PIC = NO;
576
+ GCC_NO_COMMON_BLOCKS = YES;
577
+ GCC_OPTIMIZATION_LEVEL = 0;
578
+ GCC_PREPROCESSOR_DEFINITIONS = (
579
+ "$(inherited)",
580
+ "DEBUG=1",
581
+ );
582
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
583
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
584
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
585
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
586
+ GCC_WARN_UNUSED_FUNCTION = YES;
587
+ GCC_WARN_UNUSED_VARIABLE = YES;
588
+ GENERATE_INFOPLIST_FILE = YES;
589
+ INFOPLIST_KEY_CFBundleDisplayName = ControlKit;
590
+ IPHONEOS_DEPLOYMENT_TARGET = 16.0;
591
+ LD_RUNPATH_SEARCH_PATHS = (
592
+ "$(inherited)",
593
+ "@executable_path/Frameworks",
594
+ );
595
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
596
+ MTL_FAST_MATH = YES;
597
+ ONLY_ACTIVE_ARCH = YES;
598
+ PRODUCT_NAME = "$(TARGET_NAME)";
599
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
600
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
601
+ SWIFT_VERSION = 5.9;
602
+ TVOS_DEPLOYMENT_TARGET = 16.0;
603
+ XROS_DEPLOYMENT_TARGET = 1.0;
604
+ };
605
+ name = Debug;
606
+ };
607
+ 540AA08AAD985F8F777D57E1 /* Release */ = {
608
+ isa = XCBuildConfiguration;
609
+ buildSettings = {
610
+ BUNDLE_LOADER = "$(TEST_HOST)";
611
+ LD_RUNPATH_SEARCH_PATHS = (
612
+ "$(inherited)",
613
+ "@executable_path/Frameworks",
614
+ "@loader_path/Frameworks",
615
+ );
616
+ PRODUCT_BUNDLE_IDENTIFIER = "com.smbcloud.xcrs-controlkit.visionos.runnerUITests";
617
+ SDKROOT = xros;
618
+ TARGETED_DEVICE_FAMILY = 7;
619
+ TEST_TARGET_NAME = "ControlKit-visionOS";
620
+ };
621
+ name = Release;
622
+ };
623
+ 5CCFC05738690F1B9995260B /* Release */ = {
624
+ isa = XCBuildConfiguration;
625
+ buildSettings = {
626
+ BUNDLE_LOADER = "$(TEST_HOST)";
627
+ LD_RUNPATH_SEARCH_PATHS = (
628
+ "$(inherited)",
629
+ "@executable_path/Frameworks",
630
+ "@loader_path/Frameworks",
631
+ );
632
+ PRODUCT_BUNDLE_IDENTIFIER = "com.smbcloud.xcrs-controlkit.ios.runnerUITests";
633
+ SDKROOT = iphoneos;
634
+ TARGETED_DEVICE_FAMILY = "1,2";
635
+ TEST_TARGET_NAME = "ControlKit-iOS";
636
+ };
637
+ name = Release;
638
+ };
639
+ 5DFC622632D5C806ABD2166A /* Debug */ = {
640
+ isa = XCBuildConfiguration;
641
+ buildSettings = {
642
+ BUNDLE_LOADER = "$(TEST_HOST)";
643
+ LD_RUNPATH_SEARCH_PATHS = (
644
+ "$(inherited)",
645
+ "@executable_path/Frameworks",
646
+ "@loader_path/Frameworks",
647
+ );
648
+ PRODUCT_BUNDLE_IDENTIFIER = "com.smbcloud.xcrs-controlkit.tvos.runnerUITests";
649
+ SDKROOT = appletvos;
650
+ TARGETED_DEVICE_FAMILY = 3;
651
+ TEST_TARGET_NAME = "ControlKit-tvOS";
652
+ };
653
+ name = Debug;
654
+ };
655
+ 75D889A99C7B6070232E7838 /* Release */ = {
656
+ isa = XCBuildConfiguration;
657
+ buildSettings = {
658
+ BUNDLE_LOADER = "$(TEST_HOST)";
659
+ LD_RUNPATH_SEARCH_PATHS = (
660
+ "$(inherited)",
661
+ "@executable_path/Frameworks",
662
+ "@loader_path/Frameworks",
663
+ );
664
+ PRODUCT_BUNDLE_IDENTIFIER = "com.smbcloud.xcrs-controlkit.tvos.runnerUITests";
665
+ SDKROOT = appletvos;
666
+ TARGETED_DEVICE_FAMILY = 3;
667
+ TEST_TARGET_NAME = "ControlKit-tvOS";
668
+ };
669
+ name = Release;
670
+ };
671
+ 83055E7AC43FEEB9B1276EDA /* Debug */ = {
672
+ isa = XCBuildConfiguration;
673
+ buildSettings = {
674
+ BUNDLE_LOADER = "$(TEST_HOST)";
675
+ LD_RUNPATH_SEARCH_PATHS = (
676
+ "$(inherited)",
677
+ "@executable_path/Frameworks",
678
+ "@loader_path/Frameworks",
679
+ );
680
+ PRODUCT_BUNDLE_IDENTIFIER = "com.smbcloud.xcrs-controlkit.ios.runnerUITests";
681
+ SDKROOT = iphoneos;
682
+ TARGETED_DEVICE_FAMILY = "1,2";
683
+ TEST_TARGET_NAME = "ControlKit-iOS";
684
+ };
685
+ name = Debug;
686
+ };
687
+ 8E1F608170D5A28461B0F169 /* Debug */ = {
688
+ isa = XCBuildConfiguration;
689
+ buildSettings = {
690
+ ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
691
+ ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
692
+ LD_RUNPATH_SEARCH_PATHS = (
693
+ "$(inherited)",
694
+ "@executable_path/Frameworks",
695
+ );
696
+ PRODUCT_BUNDLE_IDENTIFIER = "com.smbcloud.xcrs-controlkit.tvos.runner";
697
+ PRODUCT_NAME = ControlKit;
698
+ SDKROOT = appletvos;
699
+ TARGETED_DEVICE_FAMILY = 3;
700
+ };
701
+ name = Debug;
702
+ };
703
+ 9E70A7B791C8304A746AD74D /* Release */ = {
704
+ isa = XCBuildConfiguration;
705
+ buildSettings = {
706
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
707
+ LD_RUNPATH_SEARCH_PATHS = (
708
+ "$(inherited)",
709
+ "@executable_path/Frameworks",
710
+ );
711
+ PRODUCT_BUNDLE_IDENTIFIER = "com.smbcloud.xcrs-controlkit.visionos.runner";
712
+ PRODUCT_NAME = ControlKit;
713
+ SDKROOT = xros;
714
+ TARGETED_DEVICE_FAMILY = 7;
715
+ };
716
+ name = Release;
717
+ };
718
+ AE247B8CB1FB1A6E8E8B8696 /* Release */ = {
719
+ isa = XCBuildConfiguration;
720
+ buildSettings = {
721
+ ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
722
+ ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
723
+ LD_RUNPATH_SEARCH_PATHS = (
724
+ "$(inherited)",
725
+ "@executable_path/Frameworks",
726
+ );
727
+ PRODUCT_BUNDLE_IDENTIFIER = "com.smbcloud.xcrs-controlkit.tvos.runner";
728
+ PRODUCT_NAME = ControlKit;
729
+ SDKROOT = appletvos;
730
+ TARGETED_DEVICE_FAMILY = 3;
731
+ };
732
+ name = Release;
733
+ };
734
+ E4C3287EEC34289D60AD8369 /* Release */ = {
735
+ isa = XCBuildConfiguration;
736
+ buildSettings = {
737
+ ALWAYS_SEARCH_USER_PATHS = NO;
738
+ CLANG_ANALYZER_NONNULL = YES;
739
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
740
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
741
+ CLANG_CXX_LIBRARY = "libc++";
742
+ CLANG_ENABLE_MODULES = YES;
743
+ CLANG_ENABLE_OBJC_ARC = YES;
744
+ CLANG_ENABLE_OBJC_WEAK = YES;
745
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
746
+ CLANG_WARN_BOOL_CONVERSION = YES;
747
+ CLANG_WARN_COMMA = YES;
748
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
749
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
750
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
751
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
752
+ CLANG_WARN_EMPTY_BODY = YES;
753
+ CLANG_WARN_ENUM_CONVERSION = YES;
754
+ CLANG_WARN_INFINITE_RECURSION = YES;
755
+ CLANG_WARN_INT_CONVERSION = YES;
756
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
757
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
758
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
759
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
760
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
761
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
762
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
763
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
764
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
765
+ CLANG_WARN_UNREACHABLE_CODE = YES;
766
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
767
+ COPY_PHASE_STRIP = NO;
768
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
769
+ ENABLE_NS_ASSERTIONS = NO;
770
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
771
+ GCC_C_LANGUAGE_STANDARD = gnu11;
772
+ GCC_NO_COMMON_BLOCKS = YES;
773
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
774
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
775
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
776
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
777
+ GCC_WARN_UNUSED_FUNCTION = YES;
778
+ GCC_WARN_UNUSED_VARIABLE = YES;
779
+ GENERATE_INFOPLIST_FILE = YES;
780
+ INFOPLIST_KEY_CFBundleDisplayName = ControlKit;
781
+ IPHONEOS_DEPLOYMENT_TARGET = 16.0;
782
+ LD_RUNPATH_SEARCH_PATHS = (
783
+ "$(inherited)",
784
+ "@executable_path/Frameworks",
785
+ );
786
+ MTL_ENABLE_DEBUG_INFO = NO;
787
+ MTL_FAST_MATH = YES;
788
+ PRODUCT_NAME = "$(TARGET_NAME)";
789
+ SWIFT_COMPILATION_MODE = wholemodule;
790
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
791
+ SWIFT_VERSION = 5.9;
792
+ TVOS_DEPLOYMENT_TARGET = 16.0;
793
+ XROS_DEPLOYMENT_TARGET = 1.0;
794
+ };
795
+ name = Release;
796
+ };
797
+/* End XCBuildConfiguration section */
798
+
799
+/* Begin XCConfigurationList section */
800
+ 42681BF128073F8CD1146052 /* Build configuration list for PBXNativeTarget "ControlKit-iOS" */ = {
801
+ isa = XCConfigurationList;
802
+ buildConfigurations = (
803
+ 21F4165C7F57458C04C5805E /* Debug */,
804
+ 05E1C3E341C64C4F40D8F6EF /* Release */,
805
+ );
806
+ defaultConfigurationIsVisible = 0;
807
+ defaultConfigurationName = Debug;
808
+ };
809
+ 5DD1F1B919E5F8BC9E03021C /* Build configuration list for PBXProject "XCRSControlKitRunner" */ = {
810
+ isa = XCConfigurationList;
811
+ buildConfigurations = (
812
+ 51FACD26B90FED54CC62D2FD /* Debug */,
813
+ E4C3287EEC34289D60AD8369 /* Release */,
814
+ );
815
+ defaultConfigurationIsVisible = 0;
816
+ defaultConfigurationName = Debug;
817
+ };
818
+ 83E3FC025793339356561648 /* Build configuration list for PBXNativeTarget "ControlKit-iOS-UITests" */ = {
819
+ isa = XCConfigurationList;
820
+ buildConfigurations = (
821
+ 83055E7AC43FEEB9B1276EDA /* Debug */,
822
+ 5CCFC05738690F1B9995260B /* Release */,
823
+ );
824
+ defaultConfigurationIsVisible = 0;
825
+ defaultConfigurationName = Debug;
826
+ };
827
+ A3E875F2C0588D2AFB728EC8 /* Build configuration list for PBXNativeTarget "ControlKit-visionOS" */ = {
828
+ isa = XCConfigurationList;
829
+ buildConfigurations = (
830
+ 2E51B9F5C20DD197F5FA4F07 /* Debug */,
831
+ 9E70A7B791C8304A746AD74D /* Release */,
832
+ );
833
+ defaultConfigurationIsVisible = 0;
834
+ defaultConfigurationName = Debug;
835
+ };
836
+ B47E47F03867048313ED0BC9 /* Build configuration list for PBXNativeTarget "ControlKit-visionOS-UITests" */ = {
837
+ isa = XCConfigurationList;
838
+ buildConfigurations = (
839
+ 41FF10163C9AB188CF4891AF /* Debug */,
840
+ 540AA08AAD985F8F777D57E1 /* Release */,
841
+ );
842
+ defaultConfigurationIsVisible = 0;
843
+ defaultConfigurationName = Debug;
844
+ };
845
+ DC1656DA116F4F1E1E7A9039 /* Build configuration list for PBXNativeTarget "ControlKit-tvOS-UITests" */ = {
846
+ isa = XCConfigurationList;
847
+ buildConfigurations = (
848
+ 5DFC622632D5C806ABD2166A /* Debug */,
849
+ 75D889A99C7B6070232E7838 /* Release */,
850
+ );
851
+ defaultConfigurationIsVisible = 0;
852
+ defaultConfigurationName = Debug;
853
+ };
854
+ F90CA1FF8DF178C6B4D2D56F /* Build configuration list for PBXNativeTarget "ControlKit-tvOS" */ = {
855
+ isa = XCConfigurationList;
856
+ buildConfigurations = (
857
+ 8E1F608170D5A28461B0F169 /* Debug */,
858
+ AE247B8CB1FB1A6E8E8B8696 /* Release */,
859
+ );
860
+ defaultConfigurationIsVisible = 0;
861
+ defaultConfigurationName = Debug;
862
+ };
863
+/* End XCConfigurationList section */
864
+
865
+/* Begin XCLocalSwiftPackageReference section */
866
+ B1F1238966374497306EE6F6 /* XCLocalSwiftPackageReference ".." */ = {
867
+ isa = XCLocalSwiftPackageReference;
868
+ relativePath = ..;
869
+ };
870
+/* End XCLocalSwiftPackageReference section */
871
+
872
+/* Begin XCRemoteSwiftPackageReference section */
873
+ 097CD02F3C7519204C9CDC73 /* XCRemoteSwiftPackageReference "swift-nio" */ = {
874
+ isa = XCRemoteSwiftPackageReference;
875
+ repositoryURL = "https://github.com/apple/swift-nio.git";
876
+ requirement = {
877
+ kind = upToNextMajorVersion;
878
+ minimumVersion = 2.0.0;
879
+ };
880
+ };
881
+/* End XCRemoteSwiftPackageReference section */
882
+
883
+/* Begin XCSwiftPackageProductDependency section */
884
+ 17A1603CDD0A79E07FAC7D43 /* XCRSControlKit */ = {
885
+ isa = XCSwiftPackageProductDependency;
886
+ productName = XCRSControlKit;
887
+ };
888
+ 1EEBDB1A27DC2D28A6BB1B95 /* NIOCore */ = {
889
+ isa = XCSwiftPackageProductDependency;
890
+ package = 097CD02F3C7519204C9CDC73 /* XCRemoteSwiftPackageReference "swift-nio" */;
891
+ productName = NIOCore;
892
+ };
893
+ 2B7D7F431DC211BEDBFC374A /* NIOPosix */ = {
894
+ isa = XCSwiftPackageProductDependency;
895
+ package = 097CD02F3C7519204C9CDC73 /* XCRemoteSwiftPackageReference "swift-nio" */;
896
+ productName = NIOPosix;
897
+ };
898
+ 39DF23C6EF63909919D192E1 /* NIOHTTP1 */ = {
899
+ isa = XCSwiftPackageProductDependency;
900
+ package = 097CD02F3C7519204C9CDC73 /* XCRemoteSwiftPackageReference "swift-nio" */;
901
+ productName = NIOHTTP1;
902
+ };
903
+ 50AB05BF2C324210174A3476 /* XCRSControlKit */ = {
904
+ isa = XCSwiftPackageProductDependency;
905
+ productName = XCRSControlKit;
906
+ };
907
+ 58494EA2BBD98AE84158250F /* NIOCore */ = {
908
+ isa = XCSwiftPackageProductDependency;
909
+ package = 097CD02F3C7519204C9CDC73 /* XCRemoteSwiftPackageReference "swift-nio" */;
910
+ productName = NIOCore;
911
+ };
912
+ 84A03CA7B1A8BF405AD3F3C4 /* NIOHTTP1 */ = {
913
+ isa = XCSwiftPackageProductDependency;
914
+ package = 097CD02F3C7519204C9CDC73 /* XCRemoteSwiftPackageReference "swift-nio" */;
915
+ productName = NIOHTTP1;
916
+ };
917
+ BE99FEAB3F75651FC71BB9B5 /* XCRSControlKit */ = {
918
+ isa = XCSwiftPackageProductDependency;
919
+ productName = XCRSControlKit;
920
+ };
921
+ C9A26D0E7AB404E7BE27C778 /* NIOPosix */ = {
922
+ isa = XCSwiftPackageProductDependency;
923
+ package = 097CD02F3C7519204C9CDC73 /* XCRemoteSwiftPackageReference "swift-nio" */;
924
+ productName = NIOPosix;
925
+ };
926
+ EE8C054B1BC0620402AEA51B /* NIOHTTP1 */ = {
927
+ isa = XCSwiftPackageProductDependency;
928
+ package = 097CD02F3C7519204C9CDC73 /* XCRemoteSwiftPackageReference "swift-nio" */;
929
+ productName = NIOHTTP1;
930
+ };
931
+ F83D3AB07112BE3B5C5CEEB0 /* NIOCore */ = {
932
+ isa = XCSwiftPackageProductDependency;
933
+ package = 097CD02F3C7519204C9CDC73 /* XCRemoteSwiftPackageReference "swift-nio" */;
934
+ productName = NIOCore;
935
+ };
936
+ FFAF906BB53F58598BDAE35B /* NIOPosix */ = {
937
+ isa = XCSwiftPackageProductDependency;
938
+ package = 097CD02F3C7519204C9CDC73 /* XCRemoteSwiftPackageReference "swift-nio" */;
939
+ productName = NIOPosix;
940
+ };
941
+/* End XCSwiftPackageProductDependency section */
942
+ };
943
+ rootObject = A886E2D8FDDF1B058227A931 /* Project object */;
944
+}
Runners/XCRSControlKitRunner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
new
+7
@@ -0,0 +1,7 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<Workspace
3
+ version = "1.0">
4
+ <FileRef
5
+ location = "self:">
6
+ </FileRef>
7
+</Workspace>
Runners/XCRSControlKitRunner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
renamed
+1
-2
@@ -1,5 +1,4 @@
1
{
2
- "originHash" : "dc64d5a9a584c1afdd2823a6335adce6e83ebd68e5e5f250156866e5bdc7e973",
2
"pins" : [
3
{
4
"identity" : "swift-atomics",
@@ -38,5 +37,5 @@
37
}
38
}
39
],
41
- "version" : 3
40
+ "version" : 2
41
}
Runners/XCRSControlKitRunner.xcodeproj/xcshareddata/xcschemes/ControlKit-iOS.xcscheme
renamed
+37
-17
@@ -1,11 +1,10 @@
1
<?xml version="1.0" encoding="UTF-8"?>
2
<Scheme
3
- LastUpgradeVersion = "2660"
4
- version = "1.7">
3
+ LastUpgradeVersion = "1430"
4
+ version = "1.3">
5
<BuildAction
6
parallelizeBuildables = "YES"
7
- buildImplicitDependencies = "YES"
8
- buildArchitectures = "Automatic">
7
+ buildImplicitDependencies = "YES">
8
<BuildActionEntries>
9
<BuildActionEntry
10
buildForTesting = "YES"
@@ -15,9 +14,23 @@
14
buildForAnalyzing = "YES">
15
<BuildableReference
16
BuildableIdentifier = "primary"
18
- BlueprintIdentifier = "297E6EBCF6A5F1F8FE403639"
17
+ BlueprintIdentifier = "9F5E3C368E274D9C0BF1AC09"
18
BuildableName = "ControlKit.app"
20
- BlueprintName = "XCRSControlKitRunner"
19
+ BlueprintName = "ControlKit-iOS"
20
+ ReferencedContainer = "container:XCRSControlKitRunner.xcodeproj">
21
+ </BuildableReference>
22
+ </BuildActionEntry>
23
+ <BuildActionEntry
24
+ buildForTesting = "YES"
25
+ buildForRunning = "NO"
26
+ buildForProfiling = "NO"
27
+ buildForArchiving = "NO"
28
+ buildForAnalyzing = "NO">
29
+ <BuildableReference
30
+ BuildableIdentifier = "primary"
31
+ BlueprintIdentifier = "CD73A40CAB68D297974A7E90"
32
+ BuildableName = "ControlKit-iOS-UITests.xctest"
33
+ BlueprintName = "ControlKit-iOS-UITests"
34
ReferencedContainer = "container:XCRSControlKitRunner.xcodeproj">
35
</BuildableReference>
36
</BuildActionEntry>
@@ -27,16 +40,24 @@
40
buildConfiguration = "Debug"
41
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
42
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
30
- shouldUseLaunchSchemeArgsEnv = "YES"
31
- shouldAutocreateTestPlan = "YES">
43
+ shouldUseLaunchSchemeArgsEnv = "YES">
44
+ <MacroExpansion>
45
+ <BuildableReference
46
+ BuildableIdentifier = "primary"
47
+ BlueprintIdentifier = "9F5E3C368E274D9C0BF1AC09"
48
+ BuildableName = "ControlKit.app"
49
+ BlueprintName = "ControlKit-iOS"
50
+ ReferencedContainer = "container:XCRSControlKitRunner.xcodeproj">
51
+ </BuildableReference>
52
+ </MacroExpansion>
53
<Testables>
54
<TestableReference
55
skipped = "NO">
56
<BuildableReference
57
BuildableIdentifier = "primary"
37
- BlueprintIdentifier = "40F02CDFEAF28D1FA9935842"
38
- BuildableName = "XCRSControlKitRunnerUITests.xctest"
39
- BlueprintName = "XCRSControlKitRunnerUITests"
58
+ BlueprintIdentifier = "CD73A40CAB68D297974A7E90"
59
+ BuildableName = "ControlKit-iOS-UITests.xctest"
60
+ BlueprintName = "ControlKit-iOS-UITests"
61
ReferencedContainer = "container:XCRSControlKitRunner.xcodeproj">
62
</BuildableReference>
63
</TestableReference>
@@ -51,15 +72,14 @@
72
ignoresPersistentStateOnLaunch = "NO"
73
debugDocumentVersioning = "YES"
74
debugServiceExtension = "internal"
54
- allowLocationSimulation = "YES"
55
- queueDebuggingEnableBacktraceRecording = "Yes">
75
+ allowLocationSimulation = "YES">
76
<BuildableProductRunnable
77
runnableDebuggingMode = "0">
78
<BuildableReference
79
BuildableIdentifier = "primary"
60
- BlueprintIdentifier = "297E6EBCF6A5F1F8FE403639"
80
+ BlueprintIdentifier = "9F5E3C368E274D9C0BF1AC09"
81
BuildableName = "ControlKit.app"
62
- BlueprintName = "XCRSControlKitRunner"
82
+ BlueprintName = "ControlKit-iOS"
83
ReferencedContainer = "container:XCRSControlKitRunner.xcodeproj">
84
</BuildableReference>
85
</BuildableProductRunnable>
@@ -74,9 +94,9 @@
94
runnableDebuggingMode = "0">
95
<BuildableReference
96
BuildableIdentifier = "primary"
77
- BlueprintIdentifier = "297E6EBCF6A5F1F8FE403639"
97
+ BlueprintIdentifier = "9F5E3C368E274D9C0BF1AC09"
98
BuildableName = "ControlKit.app"
79
- BlueprintName = "XCRSControlKitRunner"
99
+ BlueprintName = "ControlKit-iOS"
100
ReferencedContainer = "container:XCRSControlKitRunner.xcodeproj">
101
</BuildableReference>
102
</BuildableProductRunnable>
Runners/XCRSControlKitRunner.xcodeproj/xcshareddata/xcschemes/ControlKit-tvOS.xcscheme
renamed
+37
-17
@@ -1,11 +1,10 @@
1
<?xml version="1.0" encoding="UTF-8"?>
2
<Scheme
3
- LastUpgradeVersion = "2660"
4
- version = "1.7">
3
+ LastUpgradeVersion = "1430"
4
+ version = "1.3">
5
<BuildAction
6
parallelizeBuildables = "YES"
7
- buildImplicitDependencies = "YES"
8
- buildArchitectures = "Automatic">
7
+ buildImplicitDependencies = "YES">
8
<BuildActionEntries>
9
<BuildActionEntry
10
buildForTesting = "YES"
@@ -15,9 +14,23 @@
14
buildForAnalyzing = "YES">
15
<BuildableReference
16
BuildableIdentifier = "primary"
18
- BlueprintIdentifier = "65C69F9323FE4A33A9BD5CFD"
17
+ BlueprintIdentifier = "029C796A915A8119077A2F2D"
18
BuildableName = "ControlKit.app"
20
- BlueprintName = "XCRSControlKitRunner"
19
+ BlueprintName = "ControlKit-tvOS"
20
+ ReferencedContainer = "container:XCRSControlKitRunner.xcodeproj">
21
+ </BuildableReference>
22
+ </BuildActionEntry>
23
+ <BuildActionEntry
24
+ buildForTesting = "YES"
25
+ buildForRunning = "NO"
26
+ buildForProfiling = "NO"
27
+ buildForArchiving = "NO"
28
+ buildForAnalyzing = "NO">
29
+ <BuildableReference
30
+ BuildableIdentifier = "primary"
31
+ BlueprintIdentifier = "8B29B60E49F265583C3FB987"
32
+ BuildableName = "ControlKit-tvOS-UITests.xctest"
33
+ BlueprintName = "ControlKit-tvOS-UITests"
34
ReferencedContainer = "container:XCRSControlKitRunner.xcodeproj">
35
</BuildableReference>
36
</BuildActionEntry>
@@ -27,16 +40,24 @@
40
buildConfiguration = "Debug"
41
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
42
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
30
- shouldUseLaunchSchemeArgsEnv = "YES"
31
- shouldAutocreateTestPlan = "YES">
43
+ shouldUseLaunchSchemeArgsEnv = "YES">
44
+ <MacroExpansion>
45
+ <BuildableReference
46
+ BuildableIdentifier = "primary"
47
+ BlueprintIdentifier = "029C796A915A8119077A2F2D"
48
+ BuildableName = "ControlKit.app"
49
+ BlueprintName = "ControlKit-tvOS"
50
+ ReferencedContainer = "container:XCRSControlKitRunner.xcodeproj">
51
+ </BuildableReference>
52
+ </MacroExpansion>
53
<Testables>
54
<TestableReference
55
skipped = "NO">
56
<BuildableReference
57
BuildableIdentifier = "primary"
37
- BlueprintIdentifier = "3D3C633B3F1CE5F513D7F973"
38
- BuildableName = "XCRSControlKitRunnerUITests.xctest"
39
- BlueprintName = "XCRSControlKitRunnerUITests"
58
+ BlueprintIdentifier = "8B29B60E49F265583C3FB987"
59
+ BuildableName = "ControlKit-tvOS-UITests.xctest"
60
+ BlueprintName = "ControlKit-tvOS-UITests"
61
ReferencedContainer = "container:XCRSControlKitRunner.xcodeproj">
62
</BuildableReference>
63
</TestableReference>
@@ -51,15 +72,14 @@
72
ignoresPersistentStateOnLaunch = "NO"
73
debugDocumentVersioning = "YES"
74
debugServiceExtension = "internal"
54
- allowLocationSimulation = "YES"
55
- queueDebuggingEnableBacktraceRecording = "Yes">
75
+ allowLocationSimulation = "YES">
76
<BuildableProductRunnable
77
runnableDebuggingMode = "0">
78
<BuildableReference
79
BuildableIdentifier = "primary"
60
- BlueprintIdentifier = "65C69F9323FE4A33A9BD5CFD"
80
+ BlueprintIdentifier = "029C796A915A8119077A2F2D"
81
BuildableName = "ControlKit.app"
62
- BlueprintName = "XCRSControlKitRunner"
82
+ BlueprintName = "ControlKit-tvOS"
83
ReferencedContainer = "container:XCRSControlKitRunner.xcodeproj">
84
</BuildableReference>
85
</BuildableProductRunnable>
@@ -74,9 +94,9 @@
94
runnableDebuggingMode = "0">
95
<BuildableReference
96
BuildableIdentifier = "primary"
77
- BlueprintIdentifier = "65C69F9323FE4A33A9BD5CFD"
97
+ BlueprintIdentifier = "029C796A915A8119077A2F2D"
98
BuildableName = "ControlKit.app"
79
- BlueprintName = "XCRSControlKitRunner"
99
+ BlueprintName = "ControlKit-tvOS"
100
ReferencedContainer = "container:XCRSControlKitRunner.xcodeproj">
101
</BuildableReference>
102
</BuildableProductRunnable>
Runners/XCRSControlKitRunner.xcodeproj/xcshareddata/xcschemes/ControlKit-visionOS.xcscheme
new
+111
@@ -0,0 +1,111 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<Scheme
3
+ LastUpgradeVersion = "1430"
4
+ version = "1.3">
5
+ <BuildAction
6
+ parallelizeBuildables = "YES"
7
+ buildImplicitDependencies = "YES">
8
+ <BuildActionEntries>
9
+ <BuildActionEntry
10
+ buildForTesting = "YES"
11
+ buildForRunning = "YES"
12
+ buildForProfiling = "YES"
13
+ buildForArchiving = "YES"
14
+ buildForAnalyzing = "YES">
15
+ <BuildableReference
16
+ BuildableIdentifier = "primary"
17
+ BlueprintIdentifier = "720F3EC917A0116B593FBBBB"
18
+ BuildableName = "ControlKit.app"
19
+ BlueprintName = "ControlKit-visionOS"
20
+ ReferencedContainer = "container:XCRSControlKitRunner.xcodeproj">
21
+ </BuildableReference>
22
+ </BuildActionEntry>
23
+ <BuildActionEntry
24
+ buildForTesting = "YES"
25
+ buildForRunning = "NO"
26
+ buildForProfiling = "NO"
27
+ buildForArchiving = "NO"
28
+ buildForAnalyzing = "NO">
29
+ <BuildableReference
30
+ BuildableIdentifier = "primary"
31
+ BlueprintIdentifier = "09F6B446FD034D1BCF7FE56B"
32
+ BuildableName = "ControlKit-visionOS-UITests.xctest"
33
+ BlueprintName = "ControlKit-visionOS-UITests"
34
+ ReferencedContainer = "container:XCRSControlKitRunner.xcodeproj">
35
+ </BuildableReference>
36
+ </BuildActionEntry>
37
+ </BuildActionEntries>
38
+ </BuildAction>
39
+ <TestAction
40
+ buildConfiguration = "Debug"
41
+ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
42
+ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
43
+ shouldUseLaunchSchemeArgsEnv = "YES">
44
+ <MacroExpansion>
45
+ <BuildableReference
46
+ BuildableIdentifier = "primary"
47
+ BlueprintIdentifier = "720F3EC917A0116B593FBBBB"
48
+ BuildableName = "ControlKit.app"
49
+ BlueprintName = "ControlKit-visionOS"
50
+ ReferencedContainer = "container:XCRSControlKitRunner.xcodeproj">
51
+ </BuildableReference>
52
+ </MacroExpansion>
53
+ <Testables>
54
+ <TestableReference
55
+ skipped = "NO">
56
+ <BuildableReference
57
+ BuildableIdentifier = "primary"
58
+ BlueprintIdentifier = "09F6B446FD034D1BCF7FE56B"
59
+ BuildableName = "ControlKit-visionOS-UITests.xctest"
60
+ BlueprintName = "ControlKit-visionOS-UITests"
61
+ ReferencedContainer = "container:XCRSControlKitRunner.xcodeproj">
62
+ </BuildableReference>
63
+ </TestableReference>
64
+ </Testables>
65
+ </TestAction>
66
+ <LaunchAction
67
+ buildConfiguration = "Debug"
68
+ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
69
+ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
70
+ launchStyle = "0"
71
+ useCustomWorkingDirectory = "NO"
72
+ ignoresPersistentStateOnLaunch = "NO"
73
+ debugDocumentVersioning = "YES"
74
+ debugServiceExtension = "internal"
75
+ allowLocationSimulation = "YES">
76
+ <BuildableProductRunnable
77
+ runnableDebuggingMode = "0">
78
+ <BuildableReference
79
+ BuildableIdentifier = "primary"
80
+ BlueprintIdentifier = "720F3EC917A0116B593FBBBB"
81
+ BuildableName = "ControlKit.app"
82
+ BlueprintName = "ControlKit-visionOS"
83
+ ReferencedContainer = "container:XCRSControlKitRunner.xcodeproj">
84
+ </BuildableReference>
85
+ </BuildableProductRunnable>
86
+ </LaunchAction>
87
+ <ProfileAction
88
+ buildConfiguration = "Release"
89
+ shouldUseLaunchSchemeArgsEnv = "YES"
90
+ savedToolIdentifier = ""
91
+ useCustomWorkingDirectory = "NO"
92
+ debugDocumentVersioning = "YES">
93
+ <BuildableProductRunnable
94
+ runnableDebuggingMode = "0">
95
+ <BuildableReference
96
+ BuildableIdentifier = "primary"
97
+ BlueprintIdentifier = "720F3EC917A0116B593FBBBB"
98
+ BuildableName = "ControlKit.app"
99
+ BlueprintName = "ControlKit-visionOS"
100
+ ReferencedContainer = "container:XCRSControlKitRunner.xcodeproj">
101
+ </BuildableReference>
102
+ </BuildableProductRunnable>
103
+ </ProfileAction>
104
+ <AnalyzeAction
105
+ buildConfiguration = "Debug">
106
+ </AnalyzeAction>
107
+ <ArchiveAction
108
+ buildConfiguration = "Release"
109
+ revealArchiveInOrganizer = "YES">
110
+ </ArchiveAction>
111
+</Scheme>
Runners/iOS/ControlKitRunnerApp.swift
+1
-1
@@ -88,7 +88,7 @@ private struct ControlKitShowcaseView: View {
88
private var informationCard: some View {
89
VStack(alignment: .leading, spacing: 16) {
90
infoRow(title: "Project", value: "XCRSControlKit")
91
- infoRow(title: "Creator", value: "smbCloudXYZ")
91
+ infoRow(title: "Creator", value: "smbCloud")
92
infoRow(title: "Platform", value: "iOS and iPadOS")
93
infoRow(title: "Purpose", value: "Native UI automation runner")
94
}
Runners/iOS/README.md
+7
-7
@@ -1,9 +1,9 @@
1
-# XCRS ControlKit iOS runner
1
+# ControlKit iOS host app
2
3
-This is the first native runner owned by XCRS ControlKit. It is an Xcode UI
4
-testing project, not a SwiftPM target, and imports the public
5
-`XCRSControlKit` package for capability and request contracts.
3
+This folder holds the iOS / iPadOS host application (`ControlKitRunnerApp.swift`
4
+and `Assets.xcassets`) for the `ControlKit-iOS` target in the shared
5
+`XCRSControlKitRunner.xcodeproj`.
6
7
-The runner exposes a small localhost JSON-RPC server to the Rust `xcrs`
8
-client using SwiftNIO's HTTP/1 server pipeline. It is an independent
9
-ControlKit implementation with no private XCTest headers.
7
+Touch input is delivered through `XCUICoordinate` taps; the `home` button maps
8
+to `XCUIDevice`. The JSON-RPC transport and server live in `../Shared` and are
9
+compiled into the `ControlKit-iOS-UITests` target.
Runners/iOS/XCRSControlKitRunner.xcodeproj/project.pbxproj
deleted
-500
@@ -1,500 +0,0 @@
1
-// !$*UTF8*$!
2
-{
3
- archiveVersion = 1;
4
- classes = {
5
- };
6
- objectVersion = 46;
7
- objects = {
8
-
9
-/* Begin PBXBuildFile section */
10
- 12FB8732E528D5BC3CFD5353 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 677B2BA6304D7A19CA4199C6 /* Foundation.framework */; };
11
- 240C04374372369CF9288310 /* ControlKitRPCServer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45F4A2788516250C6390D6A7 /* ControlKitRPCServer.swift */; };
12
- 5267368AE4FA4A1AF152F2BB /* ControlKitRunnerApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3825CF3F09E2C73AC5BCF561 /* ControlKitRunnerApp.swift */; };
13
- 623F26CA1E5FC3982AAB778C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C9FE4276F055DA74C55074CB /* Assets.xcassets */; };
14
- 6E7B19FB8377403D45E5B319 /* ControlKitRunnerUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97053F46DD106789E5704C28 /* ControlKitRunnerUITests.swift */; };
15
- A66D6E921CCD246E49A34BD2 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 677B2BA6304D7A19CA4199C6 /* Foundation.framework */; };
16
-/* End PBXBuildFile section */
17
-
18
-/* Begin PBXContainerItemProxy section */
19
- A427DD4B39849849959312A5 /* PBXContainerItemProxy */ = {
20
- isa = PBXContainerItemProxy;
21
- containerPortal = 5A4615FAD9C725BDA6BB9D0D /* Project object */;
22
- proxyType = 1;
23
- remoteGlobalIDString = 65C69F9323FE4A33A9BD5CFD;
24
- remoteInfo = XCRSControlKitRunner;
25
- };
26
-/* End PBXContainerItemProxy section */
27
-
28
-/* Begin PBXFileReference section */
29
- 158D6AE634D750F58BFA4F3C /* XCRSControlKitRunner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = XCRSControlKitRunner.app; sourceTree = BUILT_PRODUCTS_DIR; };
30
- 3825CF3F09E2C73AC5BCF561 /* ControlKitRunnerApp.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ControlKitRunnerApp.swift; sourceTree = "<group>"; };
31
- 45F4A2788516250C6390D6A7 /* ControlKitRPCServer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ControlKitRPCServer.swift; sourceTree = "<group>"; };
32
- 677B2BA6304D7A19CA4199C6 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
33
- 97053F46DD106789E5704C28 /* ControlKitRunnerUITests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ControlKitRunnerUITests.swift; sourceTree = "<group>"; };
34
- C9FE4276F055DA74C55074CB /* Assets.xcassets */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
35
- F2384A3BC0E7D978EED69C35 /* XCRSControlKitRunnerUITests */ = {isa = PBXFileReference; includeInIndex = 0; path = XCRSControlKitRunnerUITests; sourceTree = BUILT_PRODUCTS_DIR; };
36
-/* End PBXFileReference section */
37
-
38
-/* Begin PBXFrameworksBuildPhase section */
39
- 80BD8489289F29F80E617598 /* Frameworks */ = {
40
- isa = PBXFrameworksBuildPhase;
41
- buildActionMask = 2147483647;
42
- files = (
43
- A66D6E921CCD246E49A34BD2 /* Foundation.framework in Frameworks */,
44
- );
45
- runOnlyForDeploymentPostprocessing = 0;
46
- };
47
- CE6C87241EBD1B86DA8BA3AF /* Frameworks */ = {
48
- isa = PBXFrameworksBuildPhase;
49
- buildActionMask = 2147483647;
50
- files = (
51
- 12FB8732E528D5BC3CFD5353 /* Foundation.framework in Frameworks */,
52
- );
53
- runOnlyForDeploymentPostprocessing = 0;
54
- };
55
-/* End PBXFrameworksBuildPhase section */
56
-
57
-/* Begin PBXGroup section */
58
- 26FCC7EB76F7FBFA9F2B1238 /* XCRSControlKitRunnerUITests */ = {
59
- isa = PBXGroup;
60
- children = (
61
- 97053F46DD106789E5704C28 /* ControlKitRunnerUITests.swift */,
62
- 45F4A2788516250C6390D6A7 /* ControlKitRPCServer.swift */,
63
- );
64
- name = XCRSControlKitRunnerUITests;
65
- path = .;
66
- sourceTree = "<group>";
67
- };
68
- 27707640A8563F24E4EB7902 /* Frameworks */ = {
69
- isa = PBXGroup;
70
- children = (
71
- F62FFE7A6809A05F068F78F4 /* iOS */,
72
- );
73
- name = Frameworks;
74
- sourceTree = "<group>";
75
- };
76
- 48CB2BAD4FA1AA8E4DA76E10 /* XCRSControlKitRunner */ = {
77
- isa = PBXGroup;
78
- children = (
79
- 3825CF3F09E2C73AC5BCF561 /* ControlKitRunnerApp.swift */,
80
- C9FE4276F055DA74C55074CB /* Assets.xcassets */,
81
- );
82
- name = XCRSControlKitRunner;
83
- path = .;
84
- sourceTree = "<group>";
85
- };
86
- 6B3D128F7499546CFF24AF0B /* Products */ = {
87
- isa = PBXGroup;
88
- children = (
89
- 158D6AE634D750F58BFA4F3C /* XCRSControlKitRunner.app */,
90
- F2384A3BC0E7D978EED69C35 /* XCRSControlKitRunnerUITests */,
91
- );
92
- name = Products;
93
- sourceTree = "<group>";
94
- };
95
- A58B00BE92DC60DE632CF4D2 = {
96
- isa = PBXGroup;
97
- children = (
98
- 6B3D128F7499546CFF24AF0B /* Products */,
99
- 27707640A8563F24E4EB7902 /* Frameworks */,
100
- 48CB2BAD4FA1AA8E4DA76E10 /* XCRSControlKitRunner */,
101
- 26FCC7EB76F7FBFA9F2B1238 /* XCRSControlKitRunnerUITests */,
102
- );
103
- sourceTree = "<group>";
104
- };
105
- F62FFE7A6809A05F068F78F4 /* iOS */ = {
106
- isa = PBXGroup;
107
- children = (
108
- 677B2BA6304D7A19CA4199C6 /* Foundation.framework */,
109
- );
110
- name = iOS;
111
- sourceTree = "<group>";
112
- };
113
-/* End PBXGroup section */
114
-
115
-/* Begin PBXNativeTarget section */
116
- 3D3C633B3F1CE5F513D7F973 /* XCRSControlKitRunnerUITests */ = {
117
- isa = PBXNativeTarget;
118
- buildConfigurationList = 09DCF821A316EB9B782B3281 /* Build configuration list for PBXNativeTarget "XCRSControlKitRunnerUITests" */;
119
- buildPhases = (
120
- BE45964975925FCDB7E07A02 /* Sources */,
121
- CE6C87241EBD1B86DA8BA3AF /* Frameworks */,
122
- 8C5E82B59DC87CA04ED56147 /* Resources */,
123
- );
124
- buildRules = (
125
- );
126
- dependencies = (
127
- AD9C27DDC63B00A39E2F2F6B /* PBXTargetDependency */,
128
- );
129
- name = XCRSControlKitRunnerUITests;
130
- packageProductDependencies = (
131
- 519A8A0C72E51DA6D0174E87 /* XCRSControlKit */,
132
- 3C011EAFF81B128EFF169657 /* NIOCore */,
133
- 3C599300D59533D3F1EAAB06 /* NIOHTTP1 */,
134
- 752918E24D37ADB5D048781D /* NIOPosix */,
135
- );
136
- productName = XCRSControlKitRunnerUITests;
137
- productReference = F2384A3BC0E7D978EED69C35 /* XCRSControlKitRunnerUITests */;
138
- productType = "com.apple.product-type.bundle.ui-testing";
139
- };
140
- 65C69F9323FE4A33A9BD5CFD /* XCRSControlKitRunner */ = {
141
- isa = PBXNativeTarget;
142
- buildConfigurationList = 1E9093BA177C6E09C7249452 /* Build configuration list for PBXNativeTarget "XCRSControlKitRunner" */;
143
- buildPhases = (
144
- 2E147C33CA6023EC566F9503 /* Sources */,
145
- 80BD8489289F29F80E617598 /* Frameworks */,
146
- B06C9835F24B5A268D7376F3 /* Resources */,
147
- );
148
- buildRules = (
149
- );
150
- dependencies = (
151
- );
152
- name = XCRSControlKitRunner;
153
- productName = XCRSControlKitRunner;
154
- productReference = 158D6AE634D750F58BFA4F3C /* XCRSControlKitRunner.app */;
155
- productType = "com.apple.product-type.application";
156
- };
157
-/* End PBXNativeTarget section */
158
-
159
-/* Begin PBXProject section */
160
- 5A4615FAD9C725BDA6BB9D0D /* Project object */ = {
161
- isa = PBXProject;
162
- attributes = {
163
- LastSwiftUpdateCheck = 2630;
164
- LastUpgradeCheck = 2630;
165
- };
166
- buildConfigurationList = 8E50C3CB1D836D41CF571655 /* Build configuration list for PBXProject "XCRSControlKitRunner" */;
167
- compatibilityVersion = "Xcode 3.2";
168
- developmentRegion = en;
169
- hasScannedForEncodings = 0;
170
- knownRegions = (
171
- en,
172
- Base,
173
- );
174
- mainGroup = A58B00BE92DC60DE632CF4D2;
175
- minimizedProjectReferenceProxies = 0;
176
- packageReferences = (
177
- 3DBF8CF0F31AA03CAC623B80 /* XCLocalSwiftPackageReference ".." */,
178
- 5B254FC74CBF06A66B4DD162 /* XCRemoteSwiftPackageReference "swift-nio" */,
179
- );
180
- preferredProjectObjectVersion = 77;
181
- productRefGroup = 6B3D128F7499546CFF24AF0B /* Products */;
182
- projectDirPath = "";
183
- projectRoot = "";
184
- targets = (
185
- 65C69F9323FE4A33A9BD5CFD /* XCRSControlKitRunner */,
186
- 3D3C633B3F1CE5F513D7F973 /* XCRSControlKitRunnerUITests */,
187
- );
188
- };
189
-/* End PBXProject section */
190
-
191
-/* Begin PBXResourcesBuildPhase section */
192
- 8C5E82B59DC87CA04ED56147 /* Resources */ = {
193
- isa = PBXResourcesBuildPhase;
194
- buildActionMask = 2147483647;
195
- files = (
196
- );
197
- runOnlyForDeploymentPostprocessing = 0;
198
- };
199
- B06C9835F24B5A268D7376F3 /* Resources */ = {
200
- isa = PBXResourcesBuildPhase;
201
- buildActionMask = 2147483647;
202
- files = (
203
- 623F26CA1E5FC3982AAB778C /* Assets.xcassets in Resources */,
204
- );
205
- runOnlyForDeploymentPostprocessing = 0;
206
- };
207
-/* End PBXResourcesBuildPhase section */
208
-
209
-/* Begin PBXSourcesBuildPhase section */
210
- 2E147C33CA6023EC566F9503 /* Sources */ = {
211
- isa = PBXSourcesBuildPhase;
212
- buildActionMask = 2147483647;
213
- files = (
214
- 5267368AE4FA4A1AF152F2BB /* ControlKitRunnerApp.swift in Sources */,
215
- );
216
- runOnlyForDeploymentPostprocessing = 0;
217
- };
218
- BE45964975925FCDB7E07A02 /* Sources */ = {
219
- isa = PBXSourcesBuildPhase;
220
- buildActionMask = 2147483647;
221
- files = (
222
- 6E7B19FB8377403D45E5B319 /* ControlKitRunnerUITests.swift in Sources */,
223
- 240C04374372369CF9288310 /* ControlKitRPCServer.swift in Sources */,
224
- );
225
- runOnlyForDeploymentPostprocessing = 0;
226
- };
227
-/* End PBXSourcesBuildPhase section */
228
-
229
-/* Begin PBXTargetDependency section */
230
- AD9C27DDC63B00A39E2F2F6B /* PBXTargetDependency */ = {
231
- isa = PBXTargetDependency;
232
- name = XCRSControlKitRunner;
233
- target = 65C69F9323FE4A33A9BD5CFD /* XCRSControlKitRunner */;
234
- targetProxy = A427DD4B39849849959312A5 /* PBXContainerItemProxy */;
235
- };
236
-/* End PBXTargetDependency section */
237
-
238
-/* Begin XCBuildConfiguration section */
239
- 00ABD475CB5E7B4186EF1F6F /* Debug */ = {
240
- isa = XCBuildConfiguration;
241
- buildSettings = {
242
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
243
- ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
244
- CLANG_ENABLE_OBJC_WEAK = NO;
245
- GENERATE_INFOPLIST_FILE = YES;
246
- INFOPLIST_KEY_CFBundleDisplayName = ControlKit;
247
- INFOPLIST_KEY_UIRequiresFullScreen = YES;
248
- INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait;
249
- IPHONEOS_DEPLOYMENT_TARGET = 16.0;
250
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
251
- PRODUCT_BUNDLE_IDENTIFIER = "com.smbcloud.xcrs-controlkit.runner";
252
- PRODUCT_NAME = ControlKit;
253
- SDKROOT = iphoneos;
254
- SWIFT_VERSION = 5.9;
255
- TARGETED_DEVICE_FAMILY = "1,2";
256
- };
257
- name = Debug;
258
- };
259
- 2980F2C3DA0326EBDFED9234 /* Release */ = {
260
- isa = XCBuildConfiguration;
261
- buildSettings = {
262
- ALWAYS_SEARCH_USER_PATHS = NO;
263
- CLANG_ANALYZER_NONNULL = YES;
264
- CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
265
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
266
- CLANG_CXX_LIBRARY = "libc++";
267
- CLANG_ENABLE_MODULES = YES;
268
- CLANG_ENABLE_OBJC_ARC = YES;
269
- CLANG_ENABLE_OBJC_WEAK = YES;
270
- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
271
- CLANG_WARN_BOOL_CONVERSION = YES;
272
- CLANG_WARN_COMMA = YES;
273
- CLANG_WARN_CONSTANT_CONVERSION = YES;
274
- CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
275
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
276
- CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
277
- CLANG_WARN_EMPTY_BODY = YES;
278
- CLANG_WARN_ENUM_CONVERSION = YES;
279
- CLANG_WARN_INFINITE_RECURSION = YES;
280
- CLANG_WARN_INT_CONVERSION = YES;
281
- CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
282
- CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
283
- CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
284
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
285
- CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
286
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
287
- CLANG_WARN_STRICT_PROTOTYPES = YES;
288
- CLANG_WARN_SUSPICIOUS_MOVE = YES;
289
- CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
290
- CLANG_WARN_UNREACHABLE_CODE = YES;
291
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
292
- COPY_PHASE_STRIP = NO;
293
- DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
294
- ENABLE_NS_ASSERTIONS = NO;
295
- ENABLE_STRICT_OBJC_MSGSEND = YES;
296
- GCC_C_LANGUAGE_STANDARD = gnu11;
297
- GCC_NO_COMMON_BLOCKS = YES;
298
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
299
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
300
- GCC_WARN_UNDECLARED_SELECTOR = YES;
301
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
302
- GCC_WARN_UNUSED_FUNCTION = YES;
303
- GCC_WARN_UNUSED_VARIABLE = YES;
304
- MTL_ENABLE_DEBUG_INFO = NO;
305
- MTL_FAST_MATH = YES;
306
- PRODUCT_NAME = "$(TARGET_NAME)";
307
- SWIFT_COMPILATION_MODE = wholemodule;
308
- SWIFT_OPTIMIZATION_LEVEL = "-O";
309
- SWIFT_VERSION = 5.0;
310
- };
311
- name = Release;
312
- };
313
- 720942CCA660A8F8898D0376 /* Debug */ = {
314
- isa = XCBuildConfiguration;
315
- buildSettings = {
316
- CLANG_ENABLE_OBJC_WEAK = NO;
317
- GENERATE_INFOPLIST_FILE = YES;
318
- IPHONEOS_DEPLOYMENT_TARGET = 16.0;
319
- PRODUCT_BUNDLE_IDENTIFIER = "com.smbcloud.xcrs-controlkit.runnerUITests";
320
- PRODUCT_NAME = XCRSControlKitRunnerUITests;
321
- SDKROOT = iphoneos;
322
- SWIFT_VERSION = 5.9;
323
- TARGETED_DEVICE_FAMILY = "1,2";
324
- TEST_TARGET_NAME = XCRSControlKitRunner;
325
- };
326
- name = Debug;
327
- };
328
- A3145EA68D6C9D1145657B84 /* Release */ = {
329
- isa = XCBuildConfiguration;
330
- buildSettings = {
331
- CLANG_ENABLE_OBJC_WEAK = NO;
332
- GENERATE_INFOPLIST_FILE = YES;
333
- IPHONEOS_DEPLOYMENT_TARGET = 16.0;
334
- PRODUCT_BUNDLE_IDENTIFIER = "com.smbcloud.xcrs-controlkit.runnerUITests";
335
- PRODUCT_NAME = XCRSControlKitRunnerUITests;
336
- SDKROOT = iphoneos;
337
- SWIFT_VERSION = 5.9;
338
- TARGETED_DEVICE_FAMILY = "1,2";
339
- TEST_TARGET_NAME = XCRSControlKitRunner;
340
- VALIDATE_PRODUCT = YES;
341
- };
342
- name = Release;
343
- };
344
- CCA6074EF7667C1F23D52908 /* Debug */ = {
345
- isa = XCBuildConfiguration;
346
- buildSettings = {
347
- ALWAYS_SEARCH_USER_PATHS = NO;
348
- CLANG_ANALYZER_NONNULL = YES;
349
- CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
350
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
351
- CLANG_CXX_LIBRARY = "libc++";
352
- CLANG_ENABLE_MODULES = YES;
353
- CLANG_ENABLE_OBJC_ARC = YES;
354
- CLANG_ENABLE_OBJC_WEAK = YES;
355
- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
356
- CLANG_WARN_BOOL_CONVERSION = YES;
357
- CLANG_WARN_COMMA = YES;
358
- CLANG_WARN_CONSTANT_CONVERSION = YES;
359
- CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
360
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
361
- CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
362
- CLANG_WARN_EMPTY_BODY = YES;
363
- CLANG_WARN_ENUM_CONVERSION = YES;
364
- CLANG_WARN_INFINITE_RECURSION = YES;
365
- CLANG_WARN_INT_CONVERSION = YES;
366
- CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
367
- CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
368
- CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
369
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
370
- CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
371
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
372
- CLANG_WARN_STRICT_PROTOTYPES = YES;
373
- CLANG_WARN_SUSPICIOUS_MOVE = YES;
374
- CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
375
- CLANG_WARN_UNREACHABLE_CODE = YES;
376
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
377
- COPY_PHASE_STRIP = NO;
378
- DEBUG_INFORMATION_FORMAT = dwarf;
379
- ENABLE_STRICT_OBJC_MSGSEND = YES;
380
- ENABLE_TESTABILITY = YES;
381
- GCC_C_LANGUAGE_STANDARD = gnu11;
382
- GCC_DYNAMIC_NO_PIC = NO;
383
- GCC_NO_COMMON_BLOCKS = YES;
384
- GCC_OPTIMIZATION_LEVEL = 0;
385
- GCC_PREPROCESSOR_DEFINITIONS = (
386
- "DEBUG=1",
387
- "$(inherited)",
388
- );
389
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
390
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
391
- GCC_WARN_UNDECLARED_SELECTOR = YES;
392
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
393
- GCC_WARN_UNUSED_FUNCTION = YES;
394
- GCC_WARN_UNUSED_VARIABLE = YES;
395
- MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
396
- MTL_FAST_MATH = YES;
397
- ONLY_ACTIVE_ARCH = YES;
398
- PRODUCT_NAME = "$(TARGET_NAME)";
399
- SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
400
- SWIFT_OPTIMIZATION_LEVEL = "-Onone";
401
- SWIFT_VERSION = 5.0;
402
- };
403
- name = Debug;
404
- };
405
- FD6AFD55D263981B035C1B67 /* Release */ = {
406
- isa = XCBuildConfiguration;
407
- buildSettings = {
408
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
409
- ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
410
- CLANG_ENABLE_OBJC_WEAK = NO;
411
- GENERATE_INFOPLIST_FILE = YES;
412
- INFOPLIST_KEY_CFBundleDisplayName = ControlKit;
413
- INFOPLIST_KEY_UIRequiresFullScreen = YES;
414
- INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait;
415
- IPHONEOS_DEPLOYMENT_TARGET = 16.0;
416
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
417
- PRODUCT_BUNDLE_IDENTIFIER = "com.smbcloud.xcrs-controlkit.runner";
418
- PRODUCT_NAME = ControlKit;
419
- SDKROOT = iphoneos;
420
- SWIFT_VERSION = 5.9;
421
- TARGETED_DEVICE_FAMILY = "1,2";
422
- VALIDATE_PRODUCT = YES;
423
- };
424
- name = Release;
425
- };
426
-/* End XCBuildConfiguration section */
427
-
428
-/* Begin XCConfigurationList section */
429
- 09DCF821A316EB9B782B3281 /* Build configuration list for PBXNativeTarget "XCRSControlKitRunnerUITests" */ = {
430
- isa = XCConfigurationList;
431
- buildConfigurations = (
432
- A3145EA68D6C9D1145657B84 /* Release */,
433
- 720942CCA660A8F8898D0376 /* Debug */,
434
- );
435
- defaultConfigurationIsVisible = 0;
436
- defaultConfigurationName = Release;
437
- };
438
- 1E9093BA177C6E09C7249452 /* Build configuration list for PBXNativeTarget "XCRSControlKitRunner" */ = {
439
- isa = XCConfigurationList;
440
- buildConfigurations = (
441
- FD6AFD55D263981B035C1B67 /* Release */,
442
- 00ABD475CB5E7B4186EF1F6F /* Debug */,
443
- );
444
- defaultConfigurationIsVisible = 0;
445
- defaultConfigurationName = Release;
446
- };
447
- 8E50C3CB1D836D41CF571655 /* Build configuration list for PBXProject "XCRSControlKitRunner" */ = {
448
- isa = XCConfigurationList;
449
- buildConfigurations = (
450
- CCA6074EF7667C1F23D52908 /* Debug */,
451
- 2980F2C3DA0326EBDFED9234 /* Release */,
452
- );
453
- defaultConfigurationIsVisible = 0;
454
- defaultConfigurationName = Release;
455
- };
456
-/* End XCConfigurationList section */
457
-
458
-/* Begin XCLocalSwiftPackageReference section */
459
- 3DBF8CF0F31AA03CAC623B80 /* XCLocalSwiftPackageReference ".." */ = {
460
- isa = XCLocalSwiftPackageReference;
461
- relativePath = ../..;
462
- };
463
-/* End XCLocalSwiftPackageReference section */
464
-
465
-/* Begin XCRemoteSwiftPackageReference section */
466
- 5B254FC74CBF06A66B4DD162 /* XCRemoteSwiftPackageReference "swift-nio" */ = {
467
- isa = XCRemoteSwiftPackageReference;
468
- repositoryURL = "https://github.com/apple/swift-nio.git";
469
- requirement = {
470
- kind = upToNextMajorVersion;
471
- minimumVersion = 2.0.0;
472
- };
473
- };
474
-/* End XCRemoteSwiftPackageReference section */
475
-
476
-/* Begin XCSwiftPackageProductDependency section */
477
- 3C011EAFF81B128EFF169657 /* NIOCore */ = {
478
- isa = XCSwiftPackageProductDependency;
479
- package = 5B254FC74CBF06A66B4DD162 /* XCRemoteSwiftPackageReference "swift-nio" */;
480
- productName = NIOCore;
481
- };
482
- 3C599300D59533D3F1EAAB06 /* NIOHTTP1 */ = {
483
- isa = XCSwiftPackageProductDependency;
484
- package = 5B254FC74CBF06A66B4DD162 /* XCRemoteSwiftPackageReference "swift-nio" */;
485
- productName = NIOHTTP1;
486
- };
487
- 519A8A0C72E51DA6D0174E87 /* XCRSControlKit */ = {
488
- isa = XCSwiftPackageProductDependency;
489
- package = 5B254FC74CBF06A66B4DD162 /* XCRemoteSwiftPackageReference "swift-nio" */;
490
- productName = XCRSControlKit;
491
- };
492
- 752918E24D37ADB5D048781D /* NIOPosix */ = {
493
- isa = XCSwiftPackageProductDependency;
494
- package = 5B254FC74CBF06A66B4DD162 /* XCRemoteSwiftPackageReference "swift-nio" */;
495
- productName = NIOPosix;
496
- };
497
-/* End XCSwiftPackageProductDependency section */
498
- };
499
- rootObject = 5A4615FAD9C725BDA6BB9D0D /* Project object */;
500
-}
Runners/iOS/XCRSControlKitRunner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
deleted
-42
@@ -1,42 +0,0 @@
1
-{
2
- "originHash" : "dc64d5a9a584c1afdd2823a6335adce6e83ebd68e5e5f250156866e5bdc7e973",
3
- "pins" : [
4
- {
5
- "identity" : "swift-atomics",
6
- "kind" : "remoteSourceControl",
7
- "location" : "https://github.com/apple/swift-atomics.git",
8
- "state" : {
9
- "revision" : "0442cb5a3f98ab802acb777929fdb446bda11a34",
10
- "version" : "1.3.1"
11
- }
12
- },
13
- {
14
- "identity" : "swift-collections",
15
- "kind" : "remoteSourceControl",
16
- "location" : "https://github.com/apple/swift-collections.git",
17
- "state" : {
18
- "revision" : "a0cb0954ecb21e4e31b0070e6ed5674e8556685a",
19
- "version" : "1.6.0"
20
- }
21
- },
22
- {
23
- "identity" : "swift-nio",
24
- "kind" : "remoteSourceControl",
25
- "location" : "https://github.com/apple/swift-nio.git",
26
- "state" : {
27
- "revision" : "0b18836bd8b0162e7e17a995a3fbee20ed8f3b2b",
28
- "version" : "2.101.3"
29
- }
30
- },
31
- {
32
- "identity" : "swift-system",
33
- "kind" : "remoteSourceControl",
34
- "location" : "https://github.com/apple/swift-system.git",
35
- "state" : {
36
- "revision" : "50688cacbd41d547e9eb9f7a213542340b7c442b",
37
- "version" : "1.7.5"
38
- }
39
- }
40
- ],
41
- "version" : 3
42
-}
Runners/project.yml
new
+130
@@ -0,0 +1,130 @@
1
+name: XCRSControlKitRunner
2
+options:
3
+ bundleIdPrefix: com.smbcloud.xcrs-controlkit
4
+ createIntermediateGroups: true
5
+ deploymentTarget:
6
+ iOS: "16.0"
7
+ tvOS: "16.0"
8
+ visionOS: "1.0"
9
+
10
+settings:
11
+ base:
12
+ SWIFT_VERSION: "5.9"
13
+ GENERATE_INFOPLIST_FILE: YES
14
+ INFOPLIST_KEY_CFBundleDisplayName: ControlKit
15
+ LD_RUNPATH_SEARCH_PATHS: "$(inherited) @executable_path/Frameworks"
16
+
17
+packages:
18
+ XCRSControlKit:
19
+ path: ..
20
+ swift-nio:
21
+ url: https://github.com/apple/swift-nio.git
22
+ from: 2.0.0
23
+
24
+targetTemplates:
25
+ Runner:
26
+ type: application
27
+ sources:
28
+ - path: ${platformDir}
29
+ settings:
30
+ base:
31
+ PRODUCT_NAME: ControlKit
32
+ PRODUCT_BUNDLE_IDENTIFIER: com.smbcloud.xcrs-controlkit.${platformId}.runner
33
+ UITests:
34
+ type: bundle.ui-testing
35
+ sources:
36
+ - path: Shared
37
+ dependencies:
38
+ - target: ControlKit-${platformName}
39
+ - package: XCRSControlKit
40
+ product: XCRSControlKit
41
+ - package: swift-nio
42
+ product: NIOCore
43
+ - package: swift-nio
44
+ product: NIOHTTP1
45
+ - package: swift-nio
46
+ product: NIOPosix
47
+ settings:
48
+ base:
49
+ PRODUCT_BUNDLE_IDENTIFIER: com.smbcloud.xcrs-controlkit.${platformId}.runnerUITests
50
+ TEST_TARGET_NAME: ControlKit-${platformName}
51
+
52
+targets:
53
+ ControlKit-iOS:
54
+ templates: [Runner]
55
+ platform: iOS
56
+ templateAttributes:
57
+ platformDir: iOS
58
+ platformId: ios
59
+ settings:
60
+ base:
61
+ TARGETED_DEVICE_FAMILY: "1,2"
62
+ ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
63
+ INFOPLIST_KEY_UIRequiresFullScreen: YES
64
+ INFOPLIST_KEY_UISupportedInterfaceOrientations: UIInterfaceOrientationPortrait
65
+ ControlKit-iOS-UITests:
66
+ templates: [UITests]
67
+ platform: iOS
68
+ templateAttributes:
69
+ platformName: iOS
70
+ platformId: ios
71
+
72
+ ControlKit-tvOS:
73
+ templates: [Runner]
74
+ platform: tvOS
75
+ templateAttributes:
76
+ platformDir: tvOS
77
+ platformId: tvos
78
+ settings:
79
+ base:
80
+ TARGETED_DEVICE_FAMILY: "3"
81
+ ASSETCATALOG_COMPILER_APPICON_NAME: "App Icon & Top Shelf Image"
82
+ ControlKit-tvOS-UITests:
83
+ templates: [UITests]
84
+ platform: tvOS
85
+ templateAttributes:
86
+ platformName: tvOS
87
+ platformId: tvos
88
+
89
+ ControlKit-visionOS:
90
+ templates: [Runner]
91
+ platform: visionOS
92
+ templateAttributes:
93
+ platformDir: visionOS
94
+ platformId: visionos
95
+ settings:
96
+ base:
97
+ TARGETED_DEVICE_FAMILY: "7"
98
+ ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
99
+ ControlKit-visionOS-UITests:
100
+ templates: [UITests]
101
+ platform: visionOS
102
+ templateAttributes:
103
+ platformName: visionOS
104
+ platformId: visionos
105
+
106
+schemes:
107
+ ControlKit-iOS:
108
+ build:
109
+ targets:
110
+ ControlKit-iOS: all
111
+ ControlKit-iOS-UITests: [test]
112
+ test:
113
+ targets:
114
+ - ControlKit-iOS-UITests
115
+ ControlKit-tvOS:
116
+ build:
117
+ targets:
118
+ ControlKit-tvOS: all
119
+ ControlKit-tvOS-UITests: [test]
120
+ test:
121
+ targets:
122
+ - ControlKit-tvOS-UITests
123
+ ControlKit-visionOS:
124
+ build:
125
+ targets:
126
+ ControlKit-visionOS: all
127
+ ControlKit-visionOS-UITests: [test]
128
+ test:
129
+ targets:
130
+ - ControlKit-visionOS-UITests
Runners/tvOS/ControlKitRunnerApp.swift
+1
-1
@@ -72,7 +72,7 @@ private struct ControlKitShowcaseView: View {
72
private var informationCard: some View {
73
VStack(alignment: .leading, spacing: 16) {
74
infoRow(title: "Project", value: "XCRSControlKit")
75
- infoRow(title: "Creator", value: "smbCloudXYZ")
75
+ infoRow(title: "Creator", value: "smbCloud")
76
infoRow(title: "Platform", value: "tvOS")
77
infoRow(title: "Purpose", value: "Native UI automation runner")
78
}
Runners/tvOS/ControlKitRunnerUITests.swift
deleted
-10
@@ -1,10 +0,0 @@
1
-import XCTest
2
-
3
-final class ControlKitRunnerUITests: XCTestCase {
4
- @MainActor
5
- func testRunAutomation() async throws {
6
- continueAfterFailure = true
7
- let server = ControlKitRPCServer()
8
- try await server.start()
9
- }
10
-}
Runners/tvOS/README.md
+7
-7
@@ -1,9 +1,9 @@
1
-# XCRS ControlKit tvOS runner
1
+# ControlKit tvOS host app
2
3
-This is the native tvOS runner owned by XCRS ControlKit. It is an Xcode UI
4
-testing project, not a SwiftPM target, and imports the public
5
-`XCRSControlKit` package for capability and request contracts.
3
+This folder holds the tvOS host application (`ControlKitRunnerApp.swift` and
4
+`Assets.xcassets`) for the `ControlKit-tvOS` target in the shared
5
+`XCRSControlKitRunner.xcodeproj`.
6
7
-The runner exposes a localhost JSON-RPC server to the Rust `xcrs` client using
8
-SwiftNIO's HTTP/1 server pipeline. tvOS remote buttons are handled through
9
-`XCUIRemote`, with no private XCTest headers.
7
+tvOS is remote-driven: `device.io.button` maps to `XCUIRemote` presses and
8
+touch/`home` are intentionally unsupported. The JSON-RPC transport and server
9
+live in `../Shared` and are compiled into the `ControlKit-tvOS-UITests` target.
Runners/tvOS/XCRSControlKitRunner.xcodeproj/project.pbxproj
deleted
-497
@@ -1,497 +0,0 @@
1
-// !$*UTF8*$!
2
-{
3
- archiveVersion = 1;
4
- classes = {
5
- };
6
- objectVersion = 60;
7
- objects = {
8
-
9
-/* Begin PBXBuildFile section */
10
- 035513224895A0CE4FB0D064 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 30183ACB20CEB829E0490ED5 /* Assets.xcassets */; };
11
- 0D569CAD6B368B9B5C36E8BE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2EC08D851E6330976D22EA82 /* Foundation.framework */; };
12
- 3580744EA3A51BD112ABA6D9 /* ControlKitRunnerApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEC8BA1384D1001CFCB138C1 /* ControlKitRunnerApp.swift */; };
13
- 42240429301B7F4D00D1B8E9 /* XCRSControlKit in Frameworks */ = {isa = PBXBuildFile; productRef = 8E9294EFB8D77093FD3218B5 /* XCRSControlKit */; };
14
- 4224042A301B7F4D00D1B8E9 /* NIOCore in Frameworks */ = {isa = PBXBuildFile; productRef = B0B9B1FF3D723F8C6B727F7D /* NIOCore */; };
15
- 4224042B301B7F4D00D1B8E9 /* NIOHTTP1 in Frameworks */ = {isa = PBXBuildFile; productRef = B7FD539749497B63541C3CA6 /* NIOHTTP1 */; };
16
- 4224042C301B7F4D00D1B8E9 /* NIOPosix in Frameworks */ = {isa = PBXBuildFile; productRef = B81BFC255C5D3B81571A1A59 /* NIOPosix */; };
17
- 5AD6201B303072328B2B1CF3 /* ControlKitRunnerUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 675B8D131573D551CBDD5C49 /* ControlKitRunnerUITests.swift */; };
18
- 5F061CEA82FE3FDD1B4FB7CD /* ControlKitRPCServer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87228C0BF79EA823E25797A5 /* ControlKitRPCServer.swift */; };
19
- E550F44417BCF134B5F636A8 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2EC08D851E6330976D22EA82 /* Foundation.framework */; };
20
-/* End PBXBuildFile section */
21
-
22
-/* Begin PBXContainerItemProxy section */
23
- 4072D01C68F474F1230D8E2E /* PBXContainerItemProxy */ = {
24
- isa = PBXContainerItemProxy;
25
- containerPortal = 0B09FAC4377C92AD60C7E93C /* Project object */;
26
- proxyType = 1;
27
- remoteGlobalIDString = 297E6EBCF6A5F1F8FE403639;
28
- remoteInfo = XCRSControlKitRunner;
29
- };
30
-/* End PBXContainerItemProxy section */
31
-
32
-/* Begin PBXFileReference section */
33
- 2EC08D851E6330976D22EA82 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
34
- 30183ACB20CEB829E0490ED5 /* Assets.xcassets */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
35
- 675B8D131573D551CBDD5C49 /* ControlKitRunnerUITests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ControlKitRunnerUITests.swift; sourceTree = "<group>"; };
36
- 87228C0BF79EA823E25797A5 /* ControlKitRPCServer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ControlKitRPCServer.swift; path = ../iOS/ControlKitRPCServer.swift; sourceTree = "<group>"; };
37
- A310FFE002FC01D2DF5242A0 /* XCRSControlKitRunnerUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = XCRSControlKitRunnerUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
38
- C3B8D9F0D2E11E792710F2B9 /* ControlKit.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ControlKit.app; sourceTree = BUILT_PRODUCTS_DIR; };
39
- CEC8BA1384D1001CFCB138C1 /* ControlKitRunnerApp.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ControlKitRunnerApp.swift; sourceTree = "<group>"; };
40
-/* End PBXFileReference section */
41
-
42
-/* Begin PBXFrameworksBuildPhase section */
43
- 124443B6555ADFF30C5C0A78 /* Frameworks */ = {
44
- isa = PBXFrameworksBuildPhase;
45
- buildActionMask = 2147483647;
46
- files = (
47
- 4224042C301B7F4D00D1B8E9 /* NIOPosix in Frameworks */,
48
- 4224042B301B7F4D00D1B8E9 /* NIOHTTP1 in Frameworks */,
49
- 4224042A301B7F4D00D1B8E9 /* NIOCore in Frameworks */,
50
- 42240429301B7F4D00D1B8E9 /* XCRSControlKit in Frameworks */,
51
- 0D569CAD6B368B9B5C36E8BE /* Foundation.framework in Frameworks */,
52
- );
53
- runOnlyForDeploymentPostprocessing = 0;
54
- };
55
- 4D5B6A5287328D2C1161CAD0 /* Frameworks */ = {
56
- isa = PBXFrameworksBuildPhase;
57
- buildActionMask = 2147483647;
58
- files = (
59
- E550F44417BCF134B5F636A8 /* Foundation.framework in Frameworks */,
60
- );
61
- runOnlyForDeploymentPostprocessing = 0;
62
- };
63
-/* End PBXFrameworksBuildPhase section */
64
-
65
-/* Begin PBXGroup section */
66
- 69B76CD159FC79D016CC57A1 /* XCRSControlKitRunnerUITests */ = {
67
- isa = PBXGroup;
68
- children = (
69
- 675B8D131573D551CBDD5C49 /* ControlKitRunnerUITests.swift */,
70
- 87228C0BF79EA823E25797A5 /* ControlKitRPCServer.swift */,
71
- );
72
- name = XCRSControlKitRunnerUITests;
73
- sourceTree = "<group>";
74
- };
75
- 6ACA23F5AEF94EEAA4DD0680 /* Products */ = {
76
- isa = PBXGroup;
77
- children = (
78
- C3B8D9F0D2E11E792710F2B9 /* ControlKit.app */,
79
- A310FFE002FC01D2DF5242A0 /* XCRSControlKitRunnerUITests.xctest */,
80
- );
81
- name = Products;
82
- sourceTree = "<group>";
83
- };
84
- 762B4572EF9B0155C2D74F08 /* Frameworks */ = {
85
- isa = PBXGroup;
86
- children = (
87
- DD999D2C8FCBE1D3F9F52834 /* tvOS */,
88
- );
89
- name = Frameworks;
90
- sourceTree = "<group>";
91
- };
92
- 79823D8EFB85505638E6F389 /* XCRSControlKitRunner */ = {
93
- isa = PBXGroup;
94
- children = (
95
- CEC8BA1384D1001CFCB138C1 /* ControlKitRunnerApp.swift */,
96
- 30183ACB20CEB829E0490ED5 /* Assets.xcassets */,
97
- );
98
- name = XCRSControlKitRunner;
99
- sourceTree = "<group>";
100
- };
101
- CBAFCCCB076AD09654393A3B = {
102
- isa = PBXGroup;
103
- children = (
104
- 762B4572EF9B0155C2D74F08 /* Frameworks */,
105
- 79823D8EFB85505638E6F389 /* XCRSControlKitRunner */,
106
- 69B76CD159FC79D016CC57A1 /* XCRSControlKitRunnerUITests */,
107
- );
108
- sourceTree = "<group>";
109
- };
110
- DD999D2C8FCBE1D3F9F52834 /* tvOS */ = {
111
- isa = PBXGroup;
112
- children = (
113
- 2EC08D851E6330976D22EA82 /* Foundation.framework */,
114
- );
115
- name = tvOS;
116
- sourceTree = "<group>";
117
- };
118
-/* End PBXGroup section */
119
-
120
-/* Begin PBXNativeTarget section */
121
- 297E6EBCF6A5F1F8FE403639 /* XCRSControlKitRunner */ = {
122
- isa = PBXNativeTarget;
123
- buildConfigurationList = 89DAAF59F302E76CB2702737 /* Build configuration list for PBXNativeTarget "XCRSControlKitRunner" */;
124
- buildPhases = (
125
- C5901C5F5EE82CE5F1CDFAAF /* Sources */,
126
- 4D5B6A5287328D2C1161CAD0 /* Frameworks */,
127
- 33EE014E63B28349A2846990 /* Resources */,
128
- );
129
- buildRules = (
130
- );
131
- dependencies = (
132
- );
133
- name = XCRSControlKitRunner;
134
- productName = XCRSControlKitRunner;
135
- productReference = C3B8D9F0D2E11E792710F2B9 /* ControlKit.app */;
136
- productType = "com.apple.product-type.application";
137
- };
138
- 40F02CDFEAF28D1FA9935842 /* XCRSControlKitRunnerUITests */ = {
139
- isa = PBXNativeTarget;
140
- buildConfigurationList = B71370B2451E9AC83FC63C82 /* Build configuration list for PBXNativeTarget "XCRSControlKitRunnerUITests" */;
141
- buildPhases = (
142
- D43ABD22F352B6001DBD40E8 /* Sources */,
143
- 124443B6555ADFF30C5C0A78 /* Frameworks */,
144
- BB611355B972490541A99EA9 /* Resources */,
145
- );
146
- buildRules = (
147
- );
148
- dependencies = (
149
- ED17078DE028C0301457A09B /* PBXTargetDependency */,
150
- );
151
- name = XCRSControlKitRunnerUITests;
152
- packageProductDependencies = (
153
- 8E9294EFB8D77093FD3218B5 /* XCRSControlKit */,
154
- B0B9B1FF3D723F8C6B727F7D /* NIOCore */,
155
- B7FD539749497B63541C3CA6 /* NIOHTTP1 */,
156
- B81BFC255C5D3B81571A1A59 /* NIOPosix */,
157
- );
158
- productName = XCRSControlKitRunnerUITests;
159
- productReference = A310FFE002FC01D2DF5242A0 /* XCRSControlKitRunnerUITests.xctest */;
160
- productType = "com.apple.product-type.bundle.ui-testing";
161
- };
162
-/* End PBXNativeTarget section */
163
-
164
-/* Begin PBXProject section */
165
- 0B09FAC4377C92AD60C7E93C /* Project object */ = {
166
- isa = PBXProject;
167
- attributes = {
168
- LastSwiftUpdateCheck = 2630;
169
- LastUpgradeCheck = 2630;
170
- };
171
- buildConfigurationList = D057C3520D2F6DF298BDCE07 /* Build configuration list for PBXProject "XCRSControlKitRunner" */;
172
- compatibilityVersion = "Xcode 3.2";
173
- developmentRegion = en;
174
- hasScannedForEncodings = 0;
175
- knownRegions = (
176
- en,
177
- Base,
178
- );
179
- mainGroup = CBAFCCCB076AD09654393A3B;
180
- packageReferences = (
181
- 62D4A3BB7E58C0EEDFBD3798 /* XCLocalSwiftPackageReference "../.." */,
182
- 33CCE93A21C53FF1112828ED /* XCRemoteSwiftPackageReference "swift-nio" */,
183
- );
184
- productRefGroup = 6ACA23F5AEF94EEAA4DD0680 /* Products */;
185
- projectDirPath = "";
186
- projectRoot = "";
187
- targets = (
188
- 297E6EBCF6A5F1F8FE403639 /* XCRSControlKitRunner */,
189
- 40F02CDFEAF28D1FA9935842 /* XCRSControlKitRunnerUITests */,
190
- );
191
- };
192
-/* End PBXProject section */
193
-
194
-/* Begin PBXResourcesBuildPhase section */
195
- 33EE014E63B28349A2846990 /* Resources */ = {
196
- isa = PBXResourcesBuildPhase;
197
- buildActionMask = 2147483647;
198
- files = (
199
- 035513224895A0CE4FB0D064 /* Assets.xcassets in Resources */,
200
- );
201
- runOnlyForDeploymentPostprocessing = 0;
202
- };
203
- BB611355B972490541A99EA9 /* Resources */ = {
204
- isa = PBXResourcesBuildPhase;
205
- buildActionMask = 2147483647;
206
- files = (
207
- );
208
- runOnlyForDeploymentPostprocessing = 0;
209
- };
210
-/* End PBXResourcesBuildPhase section */
211
-
212
-/* Begin PBXSourcesBuildPhase section */
213
- C5901C5F5EE82CE5F1CDFAAF /* Sources */ = {
214
- isa = PBXSourcesBuildPhase;
215
- buildActionMask = 2147483647;
216
- files = (
217
- 3580744EA3A51BD112ABA6D9 /* ControlKitRunnerApp.swift in Sources */,
218
- );
219
- runOnlyForDeploymentPostprocessing = 0;
220
- };
221
- D43ABD22F352B6001DBD40E8 /* Sources */ = {
222
- isa = PBXSourcesBuildPhase;
223
- buildActionMask = 2147483647;
224
- files = (
225
- 5AD6201B303072328B2B1CF3 /* ControlKitRunnerUITests.swift in Sources */,
226
- 5F061CEA82FE3FDD1B4FB7CD /* ControlKitRPCServer.swift in Sources */,
227
- );
228
- runOnlyForDeploymentPostprocessing = 0;
229
- };
230
-/* End PBXSourcesBuildPhase section */
231
-
232
-/* Begin PBXTargetDependency section */
233
- ED17078DE028C0301457A09B /* PBXTargetDependency */ = {
234
- isa = PBXTargetDependency;
235
- name = XCRSControlKitRunner;
236
- target = 297E6EBCF6A5F1F8FE403639 /* XCRSControlKitRunner */;
237
- targetProxy = 4072D01C68F474F1230D8E2E /* PBXContainerItemProxy */;
238
- };
239
-/* End PBXTargetDependency section */
240
-
241
-/* Begin XCBuildConfiguration section */
242
- 1E279C47A0AE151A4005B2B0 /* Debug */ = {
243
- isa = XCBuildConfiguration;
244
- buildSettings = {
245
- GENERATE_INFOPLIST_FILE = YES;
246
- PRODUCT_BUNDLE_IDENTIFIER = "com.smbcloud.xcrs-controlkit.tvos.runnerUITests";
247
- PRODUCT_NAME = XCRSControlKitRunnerUITests;
248
- SDKROOT = appletvos;
249
- SWIFT_VERSION = 5.9;
250
- TVOS_DEPLOYMENT_TARGET = 16.0;
251
- };
252
- name = Debug;
253
- };
254
- 20B98D730FB57BAC0F7745B2 /* Release */ = {
255
- isa = XCBuildConfiguration;
256
- buildSettings = {
257
- ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
258
- ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
259
- GENERATE_INFOPLIST_FILE = YES;
260
- INFOPLIST_KEY_CFBundleDisplayName = ControlKit;
261
- LD_RUNPATH_SEARCH_PATHS = (
262
- "$(inherited)",
263
- "@executable_path/Frameworks",
264
- );
265
- PRODUCT_BUNDLE_IDENTIFIER = "com.smbcloud.xcrs-controlkit.tvos.runner";
266
- PRODUCT_NAME = ControlKit;
267
- SDKROOT = appletvos;
268
- SWIFT_VERSION = 5.9;
269
- TARGETED_DEVICE_FAMILY = 3;
270
- TVOS_DEPLOYMENT_TARGET = 16.0;
271
- VALIDATE_PRODUCT = YES;
272
- };
273
- name = Release;
274
- };
275
- 2D3CFBA5256921E446A203DF /* Release */ = {
276
- isa = XCBuildConfiguration;
277
- buildSettings = {
278
- ALWAYS_SEARCH_USER_PATHS = NO;
279
- CLANG_ANALYZER_NONNULL = YES;
280
- CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
281
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
282
- CLANG_CXX_LIBRARY = "libc++";
283
- CLANG_ENABLE_MODULES = YES;
284
- CLANG_ENABLE_OBJC_ARC = YES;
285
- CLANG_ENABLE_OBJC_WEAK = YES;
286
- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
287
- CLANG_WARN_BOOL_CONVERSION = YES;
288
- CLANG_WARN_COMMA = YES;
289
- CLANG_WARN_CONSTANT_CONVERSION = YES;
290
- CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
291
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
292
- CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
293
- CLANG_WARN_EMPTY_BODY = YES;
294
- CLANG_WARN_ENUM_CONVERSION = YES;
295
- CLANG_WARN_INFINITE_RECURSION = YES;
296
- CLANG_WARN_INT_CONVERSION = YES;
297
- CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
298
- CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
299
- CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
300
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
301
- CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
302
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
303
- CLANG_WARN_STRICT_PROTOTYPES = YES;
304
- CLANG_WARN_SUSPICIOUS_MOVE = YES;
305
- CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
306
- CLANG_WARN_UNREACHABLE_CODE = YES;
307
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
308
- COPY_PHASE_STRIP = NO;
309
- DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
310
- ENABLE_NS_ASSERTIONS = NO;
311
- ENABLE_STRICT_OBJC_MSGSEND = YES;
312
- GCC_C_LANGUAGE_STANDARD = gnu11;
313
- GCC_NO_COMMON_BLOCKS = YES;
314
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
315
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
316
- GCC_WARN_UNDECLARED_SELECTOR = YES;
317
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
318
- GCC_WARN_UNUSED_FUNCTION = YES;
319
- GCC_WARN_UNUSED_VARIABLE = YES;
320
- MTL_ENABLE_DEBUG_INFO = NO;
321
- MTL_FAST_MATH = YES;
322
- PRODUCT_NAME = "$(TARGET_NAME)";
323
- SWIFT_COMPILATION_MODE = wholemodule;
324
- SWIFT_OPTIMIZATION_LEVEL = "-O";
325
- SWIFT_VERSION = 5.0;
326
- };
327
- name = Release;
328
- };
329
- B86BCF1CBC84DDBB0482F50E /* Release */ = {
330
- isa = XCBuildConfiguration;
331
- buildSettings = {
332
- GENERATE_INFOPLIST_FILE = YES;
333
- PRODUCT_BUNDLE_IDENTIFIER = "com.smbcloud.xcrs-controlkit.tvos.runnerUITests";
334
- PRODUCT_NAME = XCRSControlKitRunnerUITests;
335
- SDKROOT = appletvos;
336
- SWIFT_VERSION = 5.9;
337
- TVOS_DEPLOYMENT_TARGET = 16.0;
338
- VALIDATE_PRODUCT = YES;
339
- };
340
- name = Release;
341
- };
342
- EDCF57E98B03BA7A29CF004B /* Debug */ = {
343
- isa = XCBuildConfiguration;
344
- buildSettings = {
345
- ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
346
- ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
347
- GENERATE_INFOPLIST_FILE = YES;
348
- INFOPLIST_KEY_CFBundleDisplayName = ControlKit;
349
- LD_RUNPATH_SEARCH_PATHS = (
350
- "$(inherited)",
351
- "@executable_path/Frameworks",
352
- );
353
- PRODUCT_BUNDLE_IDENTIFIER = "com.smbcloud.xcrs-controlkit.tvos.runner";
354
- PRODUCT_NAME = ControlKit;
355
- SDKROOT = appletvos;
356
- SWIFT_VERSION = 5.9;
357
- TARGETED_DEVICE_FAMILY = 3;
358
- TVOS_DEPLOYMENT_TARGET = 16.0;
359
- };
360
- name = Debug;
361
- };
362
- EE217233EFC84E56C7BF8952 /* Debug */ = {
363
- isa = XCBuildConfiguration;
364
- buildSettings = {
365
- ALWAYS_SEARCH_USER_PATHS = NO;
366
- CLANG_ANALYZER_NONNULL = YES;
367
- CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
368
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
369
- CLANG_CXX_LIBRARY = "libc++";
370
- CLANG_ENABLE_MODULES = YES;
371
- CLANG_ENABLE_OBJC_ARC = YES;
372
- CLANG_ENABLE_OBJC_WEAK = YES;
373
- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
374
- CLANG_WARN_BOOL_CONVERSION = YES;
375
- CLANG_WARN_COMMA = YES;
376
- CLANG_WARN_CONSTANT_CONVERSION = YES;
377
- CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
378
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
379
- CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
380
- CLANG_WARN_EMPTY_BODY = YES;
381
- CLANG_WARN_ENUM_CONVERSION = YES;
382
- CLANG_WARN_INFINITE_RECURSION = YES;
383
- CLANG_WARN_INT_CONVERSION = YES;
384
- CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
385
- CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
386
- CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
387
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
388
- CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
389
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
390
- CLANG_WARN_STRICT_PROTOTYPES = YES;
391
- CLANG_WARN_SUSPICIOUS_MOVE = YES;
392
- CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
393
- CLANG_WARN_UNREACHABLE_CODE = YES;
394
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
395
- COPY_PHASE_STRIP = NO;
396
- DEBUG_INFORMATION_FORMAT = dwarf;
397
- ENABLE_STRICT_OBJC_MSGSEND = YES;
398
- ENABLE_TESTABILITY = YES;
399
- GCC_C_LANGUAGE_STANDARD = gnu11;
400
- GCC_DYNAMIC_NO_PIC = NO;
401
- GCC_NO_COMMON_BLOCKS = YES;
402
- GCC_OPTIMIZATION_LEVEL = 0;
403
- GCC_PREPROCESSOR_DEFINITIONS = (
404
- "DEBUG=1",
405
- "$(inherited)",
406
- );
407
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
408
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
409
- GCC_WARN_UNDECLARED_SELECTOR = YES;
410
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
411
- GCC_WARN_UNUSED_FUNCTION = YES;
412
- GCC_WARN_UNUSED_VARIABLE = YES;
413
- MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
414
- MTL_FAST_MATH = YES;
415
- ONLY_ACTIVE_ARCH = YES;
416
- PRODUCT_NAME = "$(TARGET_NAME)";
417
- SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
418
- SWIFT_OPTIMIZATION_LEVEL = "-Onone";
419
- SWIFT_VERSION = 5.0;
420
- };
421
- name = Debug;
422
- };
423
-/* End XCBuildConfiguration section */
424
-
425
-/* Begin XCConfigurationList section */
426
- 89DAAF59F302E76CB2702737 /* Build configuration list for PBXNativeTarget "XCRSControlKitRunner" */ = {
427
- isa = XCConfigurationList;
428
- buildConfigurations = (
429
- 20B98D730FB57BAC0F7745B2 /* Release */,
430
- EDCF57E98B03BA7A29CF004B /* Debug */,
431
- );
432
- defaultConfigurationIsVisible = 0;
433
- defaultConfigurationName = Release;
434
- };
435
- B71370B2451E9AC83FC63C82 /* Build configuration list for PBXNativeTarget "XCRSControlKitRunnerUITests" */ = {
436
- isa = XCConfigurationList;
437
- buildConfigurations = (
438
- B86BCF1CBC84DDBB0482F50E /* Release */,
439
- 1E279C47A0AE151A4005B2B0 /* Debug */,
440
- );
441
- defaultConfigurationIsVisible = 0;
442
- defaultConfigurationName = Release;
443
- };
444
- D057C3520D2F6DF298BDCE07 /* Build configuration list for PBXProject "XCRSControlKitRunner" */ = {
445
- isa = XCConfigurationList;
446
- buildConfigurations = (
447
- EE217233EFC84E56C7BF8952 /* Debug */,
448
- 2D3CFBA5256921E446A203DF /* Release */,
449
- );
450
- defaultConfigurationIsVisible = 0;
451
- defaultConfigurationName = Release;
452
- };
453
-/* End XCConfigurationList section */
454
-
455
-/* Begin XCLocalSwiftPackageReference section */
456
- 62D4A3BB7E58C0EEDFBD3798 /* XCLocalSwiftPackageReference "../.." */ = {
457
- isa = XCLocalSwiftPackageReference;
458
- relativePath = ../..;
459
- };
460
-/* End XCLocalSwiftPackageReference section */
461
-
462
-/* Begin XCRemoteSwiftPackageReference section */
463
- 33CCE93A21C53FF1112828ED /* XCRemoteSwiftPackageReference "swift-nio" */ = {
464
- isa = XCRemoteSwiftPackageReference;
465
- repositoryURL = "https://github.com/apple/swift-nio.git";
466
- requirement = {
467
- kind = upToNextMajorVersion;
468
- minimumVersion = 2.0.0;
469
- };
470
- };
471
-/* End XCRemoteSwiftPackageReference section */
472
-
473
-/* Begin XCSwiftPackageProductDependency section */
474
- 8E9294EFB8D77093FD3218B5 /* XCRSControlKit */ = {
475
- isa = XCSwiftPackageProductDependency;
476
- package = 33CCE93A21C53FF1112828ED /* XCRemoteSwiftPackageReference "swift-nio" */;
477
- productName = XCRSControlKit;
478
- };
479
- B0B9B1FF3D723F8C6B727F7D /* NIOCore */ = {
480
- isa = XCSwiftPackageProductDependency;
481
- package = 33CCE93A21C53FF1112828ED /* XCRemoteSwiftPackageReference "swift-nio" */;
482
- productName = NIOCore;
483
- };
484
- B7FD539749497B63541C3CA6 /* NIOHTTP1 */ = {
485
- isa = XCSwiftPackageProductDependency;
486
- package = 33CCE93A21C53FF1112828ED /* XCRemoteSwiftPackageReference "swift-nio" */;
487
- productName = NIOHTTP1;
488
- };
489
- B81BFC255C5D3B81571A1A59 /* NIOPosix */ = {
490
- isa = XCSwiftPackageProductDependency;
491
- package = 33CCE93A21C53FF1112828ED /* XCRemoteSwiftPackageReference "swift-nio" */;
492
- productName = NIOPosix;
493
- };
494
-/* End XCSwiftPackageProductDependency section */
495
- };
496
- rootObject = 0B09FAC4377C92AD60C7E93C /* Project object */;
497
-}
Runners/tvOS/XCRSControlKitRunner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
deleted
-8
@@ -1,8 +0,0 @@
1
-<?xml version="1.0" encoding="UTF-8"?>
2
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
-<plist version="1.0">
4
-<dict>
5
- <key>IDEWorkspaceSharedSettings_AutocreateContextsIfNeeded</key>
6
- <true/>
7
-</dict>
8
-</plist>
Runners/visionOS/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Content.imageset/Back.png
Binary files /dev/null and b/Runners/visionOS/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Content.imageset/Back.png differ
Runners/visionOS/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Content.imageset/Contents.json
new
+13
@@ -0,0 +1,13 @@
1
+{
2
+ "images": [
3
+ {
4
+ "filename": "Back.png",
5
+ "idiom": "vision",
6
+ "scale": "2x"
7
+ }
8
+ ],
9
+ "info": {
10
+ "author": "xcode",
11
+ "version": 1
12
+ }
13
+}
\ No newline at end of file
Runners/visionOS/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Contents.json
new
+6
@@ -0,0 +1,6 @@
1
+{
2
+ "info": {
3
+ "author": "xcode",
4
+ "version": 1
5
+ }
6
+}
\ No newline at end of file
Runners/visionOS/Assets.xcassets/AppIcon.solidimagestack/Contents.json
new
+14
@@ -0,0 +1,14 @@
1
+{
2
+ "info": {
3
+ "author": "xcode",
4
+ "version": 1
5
+ },
6
+ "layers": [
7
+ {
8
+ "filename": "Front.solidimagestacklayer"
9
+ },
10
+ {
11
+ "filename": "Back.solidimagestacklayer"
12
+ }
13
+ ]
14
+}
\ No newline at end of file
Runners/visionOS/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Content.imageset/Contents.json
new
+13
@@ -0,0 +1,13 @@
1
+{
2
+ "images": [
3
+ {
4
+ "filename": "Front.png",
5
+ "idiom": "vision",
6
+ "scale": "2x"
7
+ }
8
+ ],
9
+ "info": {
10
+ "author": "xcode",
11
+ "version": 1
12
+ }
13
+}
\ No newline at end of file
Runners/visionOS/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Content.imageset/Front.png
Binary files /dev/null and b/Runners/visionOS/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Content.imageset/Front.png differ
Runners/visionOS/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Contents.json
new
+6
@@ -0,0 +1,6 @@
1
+{
2
+ "info": {
3
+ "author": "xcode",
4
+ "version": 1
5
+ }
6
+}
\ No newline at end of file
Runners/visionOS/ControlKitRunnerApp.swift
new
+98
@@ -0,0 +1,98 @@
1
+import SwiftUI
2
+
3
+@main
4
+struct ControlKitRunnerApp: App {
5
+ var body: some Scene {
6
+ WindowGroup {
7
+ ControlKitShowcaseView()
8
+ }
9
+ .defaultSize(width: 820, height: 620)
10
+ }
11
+}
12
+
13
+private struct ControlKitShowcaseView: View {
14
+ private let repositoryURL = URL(string: "https://github.com/ondeinference/xcrs-controlkit")!
15
+
16
+ var body: some View {
17
+ ScrollView {
18
+ VStack(alignment: .leading, spacing: 28) {
19
+ HStack(spacing: 18) {
20
+ logo
21
+ VStack(alignment: .leading, spacing: 4) {
22
+ Text("ControlKit")
23
+ .font(.system(size: 40, weight: .bold, design: .rounded))
24
+ Text("Apple platform automation")
25
+ .font(.title3)
26
+ .foregroundStyle(.secondary)
27
+ }
28
+ }
29
+
30
+ Text("A clean-room runner for reliable black-box testing across Apple platforms.")
31
+ .font(.title2.weight(.medium))
32
+ .fixedSize(horizontal: false, vertical: true)
33
+
34
+ statusCard
35
+ informationCard
36
+
37
+ Link(destination: repositoryURL) {
38
+ Label("View project on GitHub", systemImage: "arrow.up.right")
39
+ .font(.headline)
40
+ .frame(maxWidth: .infinity)
41
+ }
42
+ .buttonStyle(.borderedProminent)
43
+ }
44
+ .padding(40)
45
+ .frame(maxWidth: 760, alignment: .leading)
46
+ }
47
+ }
48
+
49
+ private var logo: some View {
50
+ Text("XC\nRS")
51
+ .font(.system(size: 30, weight: .black, design: .rounded))
52
+ .multilineTextAlignment(.center)
53
+ .lineSpacing(-8)
54
+ .foregroundStyle(Color.controlKitGreen)
55
+ .frame(width: 96, height: 96)
56
+ .background(Color.controlKitCream, in: RoundedRectangle(cornerRadius: 24))
57
+ }
58
+
59
+ private var statusCard: some View {
60
+ VStack(alignment: .leading, spacing: 14) {
61
+ Label("Runner online", systemImage: "checkmark.circle.fill")
62
+ .font(.headline)
63
+ .foregroundStyle(.green)
64
+ Text("The XCTest host is ready to receive ControlKit automation requests.")
65
+ .foregroundStyle(.secondary)
66
+ }
67
+ .padding(22)
68
+ .frame(maxWidth: .infinity, alignment: .leading)
69
+ .background(.thinMaterial, in: RoundedRectangle(cornerRadius: 20))
70
+ }
71
+
72
+ private var informationCard: some View {
73
+ VStack(alignment: .leading, spacing: 16) {
74
+ infoRow(title: "Project", value: "XCRSControlKit")
75
+ infoRow(title: "Creator", value: "smbCloud")
76
+ infoRow(title: "Platform", value: "visionOS")
77
+ infoRow(title: "Purpose", value: "Native spatial automation runner")
78
+ }
79
+ .padding(22)
80
+ .frame(maxWidth: .infinity, alignment: .leading)
81
+ .background(.thinMaterial, in: RoundedRectangle(cornerRadius: 20))
82
+ }
83
+
84
+ private func infoRow(title: String, value: String) -> some View {
85
+ HStack {
86
+ Text(title)
87
+ .foregroundStyle(.secondary)
88
+ Spacer()
89
+ Text(value)
90
+ .fontWeight(.semibold)
91
+ }
92
+ }
93
+}
94
+
95
+private extension Color {
96
+ static let controlKitGreen = Color(red: 0.106, green: 0.263, blue: 0.196)
97
+ static let controlKitCream = Color(red: 0.961, green: 0.953, blue: 0.925)
98
+}
Runners/visionOS/README.md
new
+11
@@ -0,0 +1,11 @@
1
+# ControlKit visionOS host app
2
+
3
+This folder holds the visionOS host application (`ControlKitRunnerApp.swift` and
4
+`Assets.xcassets`) for the `ControlKit-visionOS` target in the shared
5
+`XCRSControlKitRunner.xcodeproj`.
6
+
7
+visionOS is spatial: `device.io.spatial.tap` performs accessibility-driven
8
+activation through an `XCUICoordinate` tap, while raw `device.io.tap`, `home`,
9
+and orientation controls are intentionally unsupported. The JSON-RPC transport
10
+and server live in `../Shared` and are compiled into the
11
+`ControlKit-visionOS-UITests` target.