development
md 65 lines 2.28 KB
Rendered Raw
1 # macOS App Store notes
2
3 ## Bundle identifier
4
5 The macOS app now uses the same bundle identifier as the iPhone app:
6
7 - `ai.splitfire.klepon`
8
9 This keeps the main Apple-platform app identity aligned across iPhone and Mac. The watch companion still uses its own watch bundle identifier, which Apple requires for the companion app target.
10
11 ## Required entitlements
12
13 The macOS target uses:
14
15 - `KleponMac/KleponMac.entitlements`
16
17 Required keys for the shipping App Store build:
18
19 - `com.apple.security.app-sandbox = true`
20 - `com.apple.security.network.client = true`
21 - `com.apple.security.application-groups = group.com.ondeinference.apps`
22 - `ITSAppUsesNonExemptEncryption = false` in `KleponMac/Info.plist`
23
24 The sandbox entitlement is mandatory for App Store validation. The network entitlement is needed because Onde can download the optional on-device guide. `ITSAppUsesNonExemptEncryption` is an Info.plist declaration, not an entitlement. The app group keeps local model storage aligned with the other Apple targets.
25
26 ## Xcode project notes
27
28 The macOS target must not package the iPhone target's support files inside the app bundle.
29
30 In `project.yml`, the macOS target excludes:
31
32 - `Klepon/Info.plist`
33 - `Klepon/Klepon.entitlements`
34
35 Without those exclusions, Xcode can copy the iPhone plist into `Klepon.app/Contents/Resources/Info.plist`, which leads to App Store validation failures about invalid bundle identifiers, bad `CFBundleExecutable`, and duplicate bundle paths.
36
37 ## Build and archive
38
39 Generate the project:
40
41 ```/dev/null/sh#L1-1
42 xcodegen generate
43 ```
44
45 Build the macOS target locally:
46
47 ```/dev/null/sh#L1-1
48 xcodebuild build -project Klepon.xcodeproj -scheme 'Klepon Mac' -destination 'platform=macOS'
49 ```
50
51 Archive the macOS target:
52
53 ```/dev/null/sh#L1-1
54 xcodebuild archive -project Klepon.xcodeproj -scheme 'Klepon Mac' -destination 'generic/platform=macOS' -archivePath build/KleponMac.xcarchive
55 ```
56
57 ## Submission checklist
58
59 Before upload, confirm:
60
61 - the signing profile is for `ai.splitfire.klepon`
62 - the archive contains `Klepon.app/Contents/Info.plist` and no extra `Contents/Resources/Info.plist`
63 - App Sandbox is enabled in the signed app
64 - the App Group capability exists for the shipping team
65 - macOS screenshots and macOS metadata are ready in `AppStore/screenshots/macos/` and `AppStore/metadata-macos/en-US/`