Fix iOS app icon and extension bundle version validation
Declare XSAppIconAssets in the app manifest so actool receives --app-icon and the bundle carries CFBundleIconName, and always pass both Xcode version placeholders to the ReplayKit extension so an empty build number cannot drop CFBundleVersion and fail installd.
This commit is contained in:
+27
-5
@@ -101,6 +101,28 @@ be a shell sandbox or keychain-access artifact. Run the identity check from an o
|
||||
session before changing certificates. A successful build prints the selected Apple Development
|
||||
identity, provisioning profile, bundle ID, and app ID before linking.
|
||||
|
||||
### Install fails with `MissingBundleVersion`
|
||||
|
||||
CoreDevice error 3002 with `does not have a CFBundleVersion key with a non-zero length string
|
||||
value` means the ReplayKit extension was built without `CURRENT_PROJECT_VERSION`. The extension
|
||||
manifest expands that placeholder, and an empty value drops `CFBundleVersion` entirely, which
|
||||
installd rejects.
|
||||
|
||||
`build-broadcast-extension.sh` now always passes both version placeholders, defaulting to `1`
|
||||
and `0.0.1` to match `ApplicationVersion` and `ApplicationDisplayVersion` in the csproj, so a
|
||||
plain Debug deployment needs no release environment variables. If this reappears, confirm the
|
||||
script is not making `CURRENT_PROJECT_VERSION` conditional again, and check the staged bundle:
|
||||
|
||||
```bash
|
||||
/usr/libexec/PlistBuddy -c 'Print :CFBundleVersion' \
|
||||
dist/ios-managed-device/VoiceCat.iOS.app/PlugIns/VoiceCatBroadcast.appex/Info.plist
|
||||
```
|
||||
|
||||
### Install fails on a dropped connection
|
||||
|
||||
CoreDevice error 4000 with `Connection reset by peer` is a transport failure, not a bundle or
|
||||
signing problem. Rerun the deployment with `--no-build`.
|
||||
|
||||
### Developer disk image cannot be mounted
|
||||
|
||||
CoreDevice errors 10003 or 12040 mean the phone locked. Unlock it, keep the display awake, and
|
||||
@@ -113,8 +135,8 @@ listing devices or processes do not imply that an already-confirmed install or l
|
||||
|
||||
## Verified hardware result
|
||||
|
||||
On 2026-09-21, the Debug build completed with .NET 10.0.401 and Xcode 27.0. The host and
|
||||
ReplayKit extension were signed under team `FJV8L966W4`, installed wirelessly on Talon's iPhone,
|
||||
and launched as `me.iamtalon.voicecat`; the running UI was confirmed on the device. Audio,
|
||||
background/lock behavior, Bluetooth, ReplayKit, ScreenCaptureKit, and VoiceOver remain separate
|
||||
manual hardware gates.
|
||||
On 2026-09-22, the Debug build completed with .NET 10.0.401 and Xcode 27.0. The host and
|
||||
ReplayKit extension were signed under team `FJV8L966W4` with matching versions, installed on
|
||||
Talon's iPhone (iPhone 16 Pro Max), and launched as `me.iamtalon.voicecat`; the process was
|
||||
confirmed running on the device. Audio, background/lock behavior, Bluetooth, ReplayKit,
|
||||
ScreenCaptureKit, and VoiceOver remain separate manual hardware gates.
|
||||
|
||||
Reference in New Issue
Block a user