Quick answer: Godot 4 macOS universal binary export failing codesign step? Universal binaries need both architectures signed - use --options runtime or sign each slice.

Universal export; codesign fails on the arm64 slice with 'invalid signature'.

Sign with --options runtime

codesign --options runtime --sign "Developer ID" --deep app.app

Recursive sign with hardened runtime. Universal binaries get both slices signed.

Or build per-arch

Separate arm64 and x86_64 builds. Each signed independently; combined later via lipo.

Verify with spctl

spctl --assess --verbose app.app

Reports signature validity. Must pass before notarization.

“Universal binaries are two binaries. Sign both.”

If you ship Mac, the codesign + notarize ritual is non-optional. Document; automate.

Related reading