Fix physical iOS device deployment
Build and test / test (macos-latest) (push) Canceled after 0s
Build and test / test (ubuntu-24.04) (push) Canceled after 0s
Build and test / test (windows-latest) (push) Canceled after 0s
Build and test / apple-client (push) Canceled after 0s

This commit is contained in:
2026-09-21 03:10:25 +02:00
parent 4fac7af140
commit cf808483e0
4 changed files with 47 additions and 4 deletions
+27 -2
View File
@@ -35,6 +35,16 @@ clients/apple/deploy-ios-device.sh \
The verified bundle is staged at `dist/ios-managed-device/VoiceCat.iOS.app`. Omit `--no-build`
to build and deploy in one command. Add `--console` to attach the launch to device logs.
The device build first validates the checked-in managed dependency locks, then generates
`obj/packages.device.lock.json` for the single `ios-arm64` app restore. This keeps a preceding
simulator restore from making the device build fail with `NU1004`; root-level generated lock
files under `clients/apple/VoiceCat.iOS` are not inputs to the device build.
.NET's iOS linker reports `IL2104` aggregate warnings for the pinned BouncyCastle and
Google.Protobuf assemblies. The iOS project leaves those aggregate warnings visible but does not
promote them to errors. All other warnings remain subject to the repository-wide
`TreatWarningsAsErrors` policy.
Confirm that the process stayed alive:
```bash
@@ -81,15 +91,30 @@ them after runtime changes, then verify that dependency versions did not change:
--force-evaluate
```
The device script should not require this command merely because a simulator was built first. If
it does, confirm that it is using `obj/packages.device.lock.json` for its `ios-arm64` restore.
### Command-line signing identity appears missing
Xcode being signed in and `security find-identity -v -p codesigning` returning no identities can
be a shell sandbox or keychain-access artifact. Run the identity check from an ordinary Terminal
session before changing certificates. A successful build prints the selected Apple Development
identity, provisioning profile, bundle ID, and app ID before linking.
### Developer disk image cannot be mounted
CoreDevice errors 10003 or 12040 mean the phone locked. Unlock it, keep the display awake, and
rerun deployment with `--no-build`.
CoreDevice can also install the app successfully and then reject only the launch with error
10002 and reason `Locked`. In that case, unlock the phone and rerun the same `--no-build`
deployment; rebuilding is unnecessary. Occasional CoreDeviceService initialization timeouts while
listing devices or processes do not imply that an already-confirmed install or launch failed.
## Verified hardware result
On 2026-09-19, the Debug build completed with .NET 10.0.401 and Xcode 27.0. The host and
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,
launched as `me.iamtalon.voicecat`, and remained in the device process list. Audio,
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.