OPS: ios build fix#8339
Conversation
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix prepared a fix for the issue found in the latest run.
- ✅ Fixed: watchOS signing identity swapped in Widgets Release config
- Swapped the watchOS signing identities so Debug uses "iPhone Developer" and Release uses "iPhone Distribution", matching the pattern of the other SDK-specific identities in each configuration.
Or push these changes by commenting:
@cursor push c656d2cc3a
Preview (c656d2cc3a)
diff --git a/ios/BlueWallet.xcodeproj/project.pbxproj b/ios/BlueWallet.xcodeproj/project.pbxproj
--- a/ios/BlueWallet.xcodeproj/project.pbxproj
+++ b/ios/BlueWallet.xcodeproj/project.pbxproj
@@ -1572,7 +1572,7 @@
CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
- "CODE_SIGN_IDENTITY[sdk=watchos*]" = "iPhone Distribution";
+ "CODE_SIGN_IDENTITY[sdk=watchos*]" = "iPhone Developer";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 1703259999;
DEAD_CODE_STRIPPING = YES;
@@ -1632,7 +1632,7 @@
CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Distribution";
- "CODE_SIGN_IDENTITY[sdk=watchos*]" = "iPhone Developer";
+ "CODE_SIGN_IDENTITY[sdk=watchos*]" = "iPhone Distribution";
CODE_SIGN_STYLE = Manual;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1703259999;| CODE_SIGN_STYLE = Automatic; | ||
| "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; | ||
| "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Distribution"; | ||
| "CODE_SIGN_IDENTITY[sdk=watchos*]" = "iPhone Developer"; |
There was a problem hiding this comment.
watchOS signing identity swapped in Widgets Release config
High Severity
The Widgets Release configuration sets CODE_SIGN_IDENTITY[sdk=watchos*] to "iPhone Developer" (a development identity), but Release builds require a distribution identity. The other SDK targets in the same Release config correctly use distribution identities ("iPhone Distribution" for iphoneos, "Apple Distribution" for macosx), and the separate BlueWalletWatch Release config also correctly uses "iPhone Distribution" for watchOS. This will cause App Store signing failures for the watchOS widget.
GladosBlueWallet
left a comment
There was a problem hiding this comment.
I ran your build-fix experiment. The specimen is alive, but the containment unit is… questionable. Inline notes below.
| @@ -1425,10 +1425,14 @@ | |||
| CLANG_ENABLE_MODULES = YES; | |||
| CODE_SIGN_ENTITLEMENTS = BlueWallet/BlueWalletRelease.entitlements; | |||
| CODE_SIGN_IDENTITY = "Apple Development"; | |||
There was a problem hiding this comment.
You set CODE_SIGN_STYLE = Manual but keep a global CODE_SIGN_IDENTITY = "Apple Development" while also overriding iphoneos/macosx to Distribution. That split identity tends to confuse Xcode/CI (and humans). Suggest: remove the global value and rely entirely on sdk-specific settings (or move to xcconfig/CI overrides).
| CURRENT_PROJECT_VERSION = 1703259999; | ||
| DEAD_CODE_STRIPPING = YES; | ||
| DEVELOPMENT_TEAM = A7W54YZ4WU; | ||
| DEVELOPMENT_TEAM = ""; |
There was a problem hiding this comment.
DEVELOPMENT_TEAM = ""; as the default is a nice way to make local builds fail in creative new ways when the conditional keys don’t apply (or when Xcode decides to ‘help’). Prefer $(DEVELOPMENT_TEAM) / inherited defaults, or leave it unset and set team/profile in CI for release signing.
| PRODUCT_BUNDLE_IDENTIFIER = io.bluewallet.bluewallet; | ||
| PRODUCT_NAME = BlueWallet; | ||
| PROVISIONING_PROFILE_SPECIFIER = ""; | ||
| "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore io.bluewallet.bluewallet"; |
There was a problem hiding this comment.
Hard-coding PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*] = "match AppStore ..." bakes your private signing setup into the project file. That will break forks, contributors, and any CI that doesn’t have that exact match profile name. Strongly consider keeping this empty in-repo and injecting via CI / .xcconfig / xcodebuild args for the release lane.
| CODE_SIGN_STYLE = Automatic; | ||
| "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; | ||
| "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Distribution"; | ||
| "CODE_SIGN_IDENTITY[sdk=watchos*]" = "iPhone Developer"; |
There was a problem hiding this comment.
Widgets Release: CODE_SIGN_IDENTITY[sdk=watchos*] = "iPhone Developer" looks wrong for a Release/App Store signing path. If the intent is Distribution, this should be the correct distribution identity for watchOS too (and ideally consistent with your provisioning profile type). Double-check this, because it’s the kind of mismatch that only fails at the worst possible moment.
| PRODUCT_BUNDLE_IDENTIFIER = io.bluewallet.bluewallet.MarketWidget; | ||
| PRODUCT_NAME = "$(TARGET_NAME)"; | ||
| PROVISIONING_PROFILE_SPECIFIER = ""; | ||
| "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore io.bluewallet.bluewallet.MarketWidget"; |
There was a problem hiding this comment.
Same concern as above: AppStore match profiles for widget targets are now hardwired into the pbxproj. If this PR is meant to fix CI, it’s better to fix CI config rather than making the repo require your exact signing environment.



attempting to fix ios build that was apparently broken in 403573a
Note
Medium Risk
Build-signing settings are updated for multiple targets, which can fix CI/release builds but also risk breaking signing if profile names/SDK-specific overrides don’t match the build environment.
Overview
Fixes iOS build signing configuration by switching
BlueWalletandWidgetsExtensionRelease signing from Automatic to Manual and adding SDK-specificCODE_SIGN_IDENTITYoverrides (iOS, Mac Catalyst, and widget watchOS).Adds per-SDK
DEVELOPMENT_TEAMandPROVISIONING_PROFILE_SPECIFIERvalues (including FastlanematchApp Store profiles for iOS and Catalyst, and widget profiles) to ensure consistent signing across platforms.Written by Cursor Bugbot for commit e15311d. This will update automatically on new commits. Configure here.