Skip to content

Pin Runner DEBUG_INFORMATION_FORMAT=dwarf so archive validation skips dSYMs - #364

Merged
theoden8 merged 1 commit into
masterfrom
claude/fix-objective-c-dsym-archive
May 26, 2026
Merged

Pin Runner DEBUG_INFORMATION_FORMAT=dwarf so archive validation skips dSYMs#364
theoden8 merged 1 commit into
masterfrom
claude/fix-objective-c-dsym-archive

Conversation

@theoden8

@theoden8 theoden8 commented May 19, 2026

Copy link
Copy Markdown
Owner

Symptom

Archiving on iOS/macOS for App Store distribution fails validation:

The archive did not include a dSYM for the objective_c.framework
with the UUIDs [D89C9A0E-27BB-3C9B-A876-40DB0981F9C4]. Ensure that
the archive's dSYM folder includes a DWARF file for
objective_c.framework with the expected UUIDs.

objective_c is a transitive Flutter dep (pulled in via path_provider / similar) and ships its precompiled .framework without a .dSYM companion. Xcode's archive validation step refuses to distribute when any linked framework is missing a dSYM.

Why PR #363's fix wasn't enough

That PR set DEBUG_INFORMATION_FORMAT = dwarf on pod targets, which stops the pod project from emitting separate dSYMs. But the archive validation step inspects Runner's settings and Runner still defaults to dwarf-with-dsym, so Xcode still requests dSYMs for every linked framework.

Fix

Apply the same DEBUG_INFORMATION_FORMAT = dwarf to Runner's build configurations via the existing post_install hook in ios/Podfile and macos/Podfile. Runner's debug info is then inlined in its binary rather than emitted as a separate Runner.app.dSYM; Xcode no longer expects dSYMs for any linked framework and the archive validates.

Trade-off

Crash reports against Runner code symbolicate approximately. Dart stack traces are unaffected — they resolve against the embedded VM symbol map regardless of dSYM presence.

How to verify

git checkout claude/fix-objective-c-dsym-archive
rm -rf ios/Pods ios/Podfile.lock
fvm flutter clean && fvm flutter pub get
fvm flutter build ios --release

Then Archive → Distribute in Xcode. Validation completes without the objective_c.framework dSYM complaint.

@theoden8 theoden8 changed the title fix(ios/macos): pin Runner DEBUG_INFORMATION_FORMAT=dwarf for archive Pin Runner DEBUG_INFORMATION_FORMAT=dwarf so archive validation skips dSYMs May 19, 2026
Setting DEBUG_INFORMATION_FORMAT=dwarf on pod targets (PR #363) was
not enough — archive validation runs against Runner's own setting,
and Runner still defaults to dwarf-with-dsym. Xcode therefore still
expects a dSYM for every linked framework, including
objective_c.framework (transitive Flutter dep, ships precompiled
without one). Result: "The archive did not include a dSYM for the
objective_c.framework with the UUIDs [...]" and the archive can't
be distributed.

Apply the same setting to Runner's build configs via the
post_install hook. Runner's debug info is then inlined in its
binary rather than emitted as Runner.app.dSYM. Crash reports
symbolicate against Runner approximately; Dart stacks resolve via
the embedded VM symbol map regardless of dSYM presence.
@theoden8
theoden8 force-pushed the claude/fix-objective-c-dsym-archive branch from d8e1410 to 63d5cb4 Compare May 20, 2026 10:56
@theoden8
theoden8 merged commit 2763971 into master May 26, 2026
5 checks passed
@theoden8
theoden8 deleted the claude/fix-objective-c-dsym-archive branch May 26, 2026 20:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants