Skip to content

iOS driver build fails on Xcode 26.4: missing MaestroDriverLib/Info.plist #3218

@12mv2

Description

@12mv2

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions