Xcode自动更新至14后Archive版本与Build值不匹配问题求助
Hey there, sorry to hear you hit this annoying snag right after updating to Xcode 14—let’s figure out what’s going on and get this sorted without relying on manual Info.plist edits.
What’s Likely Causing This
Xcode 14 introduced stricter handling of versioning settings, and it’s common for the build number (aka CFBundleVersion) sync between your project settings and Info.plist to break after an update. The truncation you’re seeing (1.1.21 → 1.1.2) suggests Xcode isn’t correctly reading your configured build number, leading to the metadata/info.plist mismatch error when validating/distributing.
Step-by-Step Fixes
1. Align Project & Target Versioning Settings
First, make sure your project-level and target-level version settings are in sync:
- Open your project file, select your main app target.
- Switch to the Build Settings tab, search for
Versioning. - Verify
Current Project Version(this maps directly toCFBundleVersion) is set to1.1.21. - Check that
Version(maps toCFBundleShortVersionString, your marketing version) is set correctly (e.g.,1.1or1.1.21depending on your workflow). - Double-check the project-level Build Settings (not just the target) to ensure there’s no conflicting version value overriding your target settings.
2. Ensure Info.plist Uses Versioning Variables
If your Info.plist has hardcoded values instead of linking to Xcode’s versioning variables, it won’t update when you change settings in Build Settings:
- Right-click your Info.plist file → select
Open As > Source Code. - Look for
<key>CFBundleVersion</key>: its value should be$(CURRENT_PROJECT_VERSION), not a hardcoded string like1.1.2. - Do the same for
<key>CFBundleShortVersionString</key>—it should be set to$(MARKETING_VERSION)(Xcode 14’s standard variable for the marketing version). - Save the file, then clean and rebuild your project.
3. Clear Xcode’s Caches Thoroughly
Restarting Xcode and your Mac is a start, but you need to wipe out cached data that might be holding onto old version values:
- Press
Cmd+Shift+Kto clean the project. - Navigate to
~/Library/Developer/Xcode/DerivedDataand delete the folder associated with your project (it’s named with a random string after your project name). - Reopen your project and try archiving again.
4. Check for Multiple Info.plist Files
If your app includes extensions, widgets, or multiple targets, each might have its own Info.plist. Ensure all of them:
- Use the same versioning variables (
$(CURRENT_PROJECT_VERSION)and$(MARKETING_VERSION)). - Have consistent version values if you’re hardcoding (though using variables is strongly recommended).
Mismatched versions across targets will trigger the metadata error during validation.
5. Test a Simplified Build Number Format
Xcode 14 is pickier about CFBundleVersion formatting. If you’re using a 3+ segment number like 1.1.21, try switching to a pure numeric value (e.g., 1121) for Current Project Version temporarily. If that works, you can stick with it or gradually reintroduce segments to see where the issue occurs.
Why Your Temporary Fix Works (And Why It’s Not Ideal)
Manually editing the Info.plist bypasses Xcode’s versioning sync and forces the correct value, but it’s a band-aid. Every time you update your build number, you’ll have to repeat the edit, which is error-prone. Fixing the root sync issue will make your workflow smooth again.
内容的提问来源于stack exchange,提问作者Panadol Chong

