Repository navigation
Expand file tree
/
Copy pathproject.yml
More file actions
96 lines (93 loc) · 4.06 KB
/
Copy pathproject.yml
File metadata and controls
96 lines (93 loc) · 4.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
name: KitchenSyncApp
options:
bundleIdPrefix: dev.ericdahl
deploymentTarget:
iOS: "17.0"
createIntermediateGroups: true
targets:
KitchenSyncApp:
type: application
platform: iOS
sources:
- path: Sources/KitchenSyncApp
# XcodeGen GENERATES this plist on every `xcodegen generate` — hand-edits to
# Sources/KitchenSyncApp/Info.plist are overwritten. Add keys here instead.
info:
path: Sources/KitchenSyncApp/Info.plist
properties:
CFBundleShortVersionString: $(MARKETING_VERSION)
CFBundleVersion: $(CURRENT_PROJECT_VERSION)
# Without this, iOS runs the app letterboxed in legacy compatibility
# mode at a smaller screen size. An empty dict is the modern opt-in.
UILaunchScreen: {}
# Bonjour/mDNS is gated behind the local network permission (iOS 14+).
# Both keys are required: without them NWBrowser returns no results AND
# URLSession cannot resolve `<host>.local` — silently, no useful error.
# `_http._tcp` is what KitchenSyncDiscovery browses; the firmware
# advertises no more specific service type (see T-011).
NSLocalNetworkUsageDescription: KitchenSync finds your devices on the local network to show their status and control their MIDI clock.
NSBonjourServices:
- _http._tcp
# Export compliance: the app talks plain HTTP to local devices and uses only the
# OS's standard TLS — both exempt — so it declares NO non-exempt encryption. This
# pre-answers the App Store Connect compliance question so each build processes
# straight through. Revisit if the app ever adds its own crypto.
ITSAppUsesNonExemptEncryption: false
# Required for App Store upload: an iPad-capable bundle (TARGETED_DEVICE_FAMILY 1,2)
# MUST declare orientations or ingestion rejects it (error 90474 — iPad multitasking).
# iPhone gets the usual three (no upside-down); iPad gets all four.
UISupportedInterfaceOrientations:
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
UISupportedInterfaceOrientations~ipad:
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationPortraitUpsideDown
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
settings:
base:
PRODUCT_BUNDLE_IDENTIFIER: dev.ericdahl.kitchensync
# Signing for on-device runs. Xcode manages the profile; this just names the team.
# NOTE: on a real phone iOS will PROMPT for Local Network access on first launch.
# Deny it and the app sees nothing at all — Bonjour browsing and `.local`
# resolution both die silently, with no error to go on.
DEVELOPMENT_TEAM: 5HR8E5CWR7
CODE_SIGN_STYLE: Automatic
SWIFT_VERSION: "5.0"
TARGETED_DEVICE_FAMILY: "1,2"
MARKETING_VERSION: "0.1.0"
CURRENT_PROJECT_VERSION: "1"
SWIFT_STRICT_CONCURRENCY: complete
# The icon is DRAWN, not pasted: Tools/make_app_icon.swift renders
# Assets.xcassets/AppIcon.appiconset/icon-1024.png from the same palette the
# device's own web UI uses. Re-run it to change the art; don't hand-edit a PNG
# nobody can regenerate.
ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
KitchenSyncAppTests:
type: bundle.unit-test
platform: iOS
sources:
- path: Tests/KitchenSyncAppTests
dependencies:
- target: KitchenSyncApp
settings:
base:
# A test bundle still has to be code-signed, which needs an Info.plist.
# Letting Xcode synthesise one is the recommended route — there's nothing
# in it worth hand-maintaining.
GENERATE_INFOPLIST_FILE: "YES"
SWIFT_VERSION: "5.0"
SWIFT_STRICT_CONCURRENCY: complete
schemes:
KitchenSyncApp:
build:
targets:
KitchenSyncApp: all
KitchenSyncAppTests: [test]
run:
config: Debug
test:
config: Debug
targets:
- KitchenSyncAppTests