Summary
Maestro 2.4.0 fails to build the iOS driver when targeting a physical iPhone on Xcode 26.4. The xcodebuild step for MaestroDriverLib (framework target inside the bundled maestro-driver-ios project) can't find its own Info.plist input file. Signing, team ID, and provisioning profile resolution all succeed — the failure is deeper in the build phase.
Environment
- Maestro: 2.4.0 (latest — installed 2026-04-23 via official shell installer)
- Xcode:
Xcode 26.4 (Build version 17E192)
- macOS: Darwin 25.2.0 / Apple Silicon (arm64)
- Target device: iPhone 17 Pro, iOS 26.3.1, USB-connected
- Apple Developer team: paid team, valid provisioning profile installed
Reproduction
Run against a physical iPhone with a valid signing team configured in Xcode:
maestro --udid <device-udid> test --apple-team-id <TEAM_ID> path/to/flow.yaml
Expected: Maestro builds + installs iOS driver, runs the flow.
Actual: Driver build fails during xcodebuild phase.
Error
ProcessInfoPlistFile
/<…>/Build/Products/Debug-iphoneos/MaestroDriverLib.framework/Info.plist
/var/folders/…/T/maestro-xcodebuild-output<…>/MaestroDriverLib/Info.plist
(in target 'MaestroDriverLib' from project 'maestro-driver-ios')
cd /var/folders/…/T/maestro-xcodebuild-output<…>
builtin-infoPlistUtility /var/folders/…/T/maestro-xcodebuild-output<…>/MaestroDriverLib/Info.plist
-producttype com.apple.product-type.framework
-expandbuildsettings -format binary -platform iphoneos
-requiredArchitecture arm64
-o /<…>/Build/Products/Debug-iphoneos/MaestroDriverLib.framework/Info.plist
error: Build input file cannot be found:
'/var/folders/…/T/maestro-xcodebuild-output<…>/MaestroDriverLib/Info.plist'.
Did you forget to declare this file as an output of a script phase or custom build rule which produces it?
(in target 'MaestroDriverLib' from project 'maestro-driver-ios')
** TEST BUILD FAILED **
Diagnosis (best guess)
The MaestroDriverLib target expects Info.plist at a temp path generated by an earlier build phase. On Xcode 26.4 something in the framework build pipeline no longer generates that file at the expected location, and the ProcessInfoPlistFile step reads from a path that doesn't exist.
The bundled maestro-driver-ios/project.pbxproj likely needs either:
- An explicit
INFOPLIST_FILE pointing at a source-committed plist, or
- A script-phase output declaration that
Info.plist is a generated output
Similar issues from other projects on Xcode 26.x point to the framework Info.plist handling changing around product-packaging. Same root usually surfaces as "Build input file cannot be found" on auto-generated plists.
Signing works fine
The signing half of the pipeline completes cleanly with --apple-team-id:
Entitlements:
{
"application-identifier" = "<TEAM>.dev.mobile.maestro-driver-ios";
"com.apple.developer.team-identifier" = <TEAM>;
"get-task-allow" = 1;
}
Provisioning profile resolution and codesign-identity-override both work. It's only the framework's Info.plist generation that breaks.
Workarounds I tried
--reinstall-driver flag — same error (rebuild from scratch, same failure)
- Pre-
xcodebuild clean on the Maestro driver derivedData — same error
- Verifying Xcode 26.4 is stable for non-Maestro device builds — yes, the project's own Run Fun app signs + installs to device fine via
xcodebuild
So the issue is specific to the bundled maestro-driver-ios Xcode project's framework target config, not to the system's signing/Xcode setup.
Request
- Confirm Xcode 26.4 compatibility status for Maestro 2.4.0
- If there's a workaround (env var, branch of
maestro-driver-ios, version pin), please document
- Fix target: possibly Maestro 2.4.1 or 2.5.0 if the bundled driver project needs an update
Impact
This blocks all physical-device automation on Xcode 26.4 (the current Xcode release). Simulator path still works (we're using it today).
Happy to test fixes against this environment.
Generated during iOS test-harness build-out (2026-04-24). Full build log available on request.
Summary
Maestro 2.4.0 fails to build the iOS driver when targeting a physical iPhone on Xcode 26.4. The
xcodebuildstep forMaestroDriverLib(framework target inside the bundledmaestro-driver-iosproject) can't find its ownInfo.plistinput file. Signing, team ID, and provisioning profile resolution all succeed — the failure is deeper in the build phase.Environment
Xcode 26.4(Build version17E192)Reproduction
Run against a physical iPhone with a valid signing team configured in Xcode:
Expected: Maestro builds + installs iOS driver, runs the flow.
Actual: Driver build fails during
xcodebuildphase.Error
Diagnosis (best guess)
The
MaestroDriverLibtarget expectsInfo.plistat a temp path generated by an earlier build phase. On Xcode 26.4 something in the framework build pipeline no longer generates that file at the expected location, and theProcessInfoPlistFilestep reads from a path that doesn't exist.The bundled
maestro-driver-ios/project.pbxprojlikely needs either:INFOPLIST_FILEpointing at a source-committed plist, orInfo.plistis a generated outputSimilar issues from other projects on Xcode 26.x point to the framework Info.plist handling changing around product-packaging. Same root usually surfaces as "Build input file cannot be found" on auto-generated plists.
Signing works fine
The signing half of the pipeline completes cleanly with
--apple-team-id:Provisioning profile resolution and codesign-identity-override both work. It's only the framework's Info.plist generation that breaks.
Workarounds I tried
--reinstall-driverflag — same error (rebuild from scratch, same failure)xcodebuildclean on the Maestro driver derivedData — same errorxcodebuildSo the issue is specific to the bundled
maestro-driver-iosXcode project's framework target config, not to the system's signing/Xcode setup.Request
maestro-driver-ios, version pin), please documentImpact
This blocks all physical-device automation on Xcode 26.4 (the current Xcode release). Simulator path still works (we're using it today).
Happy to test fixes against this environment.
Generated during iOS test-harness build-out (2026-04-24). Full build log available on request.