Skip to content

fix(build): generate GoogleService-Info.plist into the app bundle - #1067

Merged
bmc08gt merged 1 commit into
mainfrom
fix/googleservice-plist-churn
Oct 14, 2026
Merged

bmc08gt merged 1 commit into
mainfrom
fix/googleservice-plist-churn

Conversation

@bmc08gt

@bmc08gt bmc08gt commented Oct 14, 2026

Copy link
Copy Markdown
Collaborator

Every build of the Flipcash scheme left Flipcash/Supporting Files/GoogleService-Info.plist modified. The Generate Google phase wrote the populated plist from secrets.xcconfig over the tracked, empty template.

The phase now runs after Resources and writes to $TARGET_BUILD_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH/GoogleService-Info.plist, which is also its declared output (script sandboxing needs that). The tracked template is deleted. It can't stay as a placeholder: Flipcash/ is a synchronized group, so Resources would copy it to the same bundle path and the build fails with "Multiple commands produce".

An existing checkout still has the old file on disk. The path is in .gitignore and the Flipcash target's membership exceptions, so that copy isn't listed as untracked and isn't bundled.

The pre-commit secret blocklist rejected the template's deletion along with additions. It now passes deletions (--diff-filter=d); removing a file can't leak its contents.

After merging: a checkout with the plist modified will refuse git pull until the change is discarded:

git checkout -- "Flipcash/Supporting Files/GoogleService-Info.plist"

The Generate Google phase wrote the populated plist over the tracked
template in Flipcash/Supporting Files, so every build left that file
modified. It now runs after Resources and writes straight to
$TARGET_BUILD_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH, and the template
is gone.

The template has to go rather than stay as a placeholder: the Flipcash
folder is a synchronized group, so Resources would copy it to the same
bundle path the script now declares as output. The path is also in
.gitignore and the target's membership exceptions, so a stale copy left
in an existing checkout is neither listed as untracked nor bundled.

The pre-commit blocklist now skips deletions, which it rejected along
with additions; removing a file cannot leak its contents.
@bmc08gt bmc08gt self-assigned this Oct 14, 2026
@bmc08gt
bmc08gt merged commit 912dff2 into main Oct 14, 2026
2 of 3 checks passed
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.

1 participant