t_fe859d8e: Xcode project settings migration — objectVersion 52→58, SWIFT_LANGUAGE_VERSION=6, IPHONEOS_DEPLOYMENT_TARGET=15.0, upgrade/swift-checks→2700

This commit is contained in:
2026-09-20 15:04:02 -07:00
committed by Tom
parent c674e2c27a
commit 70d549f929
2 changed files with 69 additions and 18 deletions

View File

@@ -3,7 +3,7 @@
archiveVersion = 1; archiveVersion = 1;
classes = { classes = {
}; };
objectVersion = 52; objectVersion = 58;
objects = { objects = {
/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
@@ -512,7 +512,7 @@
E2570FAD25B1AC520055B23B /* Project object */ = { E2570FAD25B1AC520055B23B /* Project object */ = {
isa = PBXProject; isa = PBXProject;
attributes = { attributes = {
LastSwiftUpdateCheck = 1240; LastSwiftUpdateCheck = 2700;
LastUpgradeCheck = 1200; LastUpgradeCheck = 1200;
TargetAttributes = { TargetAttributes = {
E216E47A261FE76F00FD9262 = { E216E47A261FE76F00FD9262 = {
@@ -742,7 +742,7 @@
CURRENT_PROJECT_VERSION = 1; CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = J793L9LQJ2; DEVELOPMENT_TEAM = J793L9LQJ2;
INFOPLIST_FILE = MonsterPreview/Info.plist; INFOPLIST_FILE = MonsterPreview/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 14.4; IPHONEOS_DEPLOYMENT_TARGET = 15.0;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
@@ -752,7 +752,7 @@
PRODUCT_BUNDLE_IDENTIFIER = com.majinnaibu.monstercards.MonsterCards.MonsterPreview; PRODUCT_BUNDLE_IDENTIFIER = com.majinnaibu.monstercards.MonsterCards.MonsterPreview;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES; SKIP_INSTALL = YES;
SWIFT_VERSION = 5.0; SWIFT_LANGUAGE_VERSION = 6;
TARGETED_DEVICE_FAMILY = "1,2"; TARGETED_DEVICE_FAMILY = "1,2";
}; };
name = Debug; name = Debug;
@@ -764,7 +764,7 @@
CURRENT_PROJECT_VERSION = 1; CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = J793L9LQJ2; DEVELOPMENT_TEAM = J793L9LQJ2;
INFOPLIST_FILE = MonsterPreview/Info.plist; INFOPLIST_FILE = MonsterPreview/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 14.4; IPHONEOS_DEPLOYMENT_TARGET = 15.0;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
@@ -774,7 +774,7 @@
PRODUCT_BUNDLE_IDENTIFIER = com.majinnaibu.monstercards.MonsterCards.MonsterPreview; PRODUCT_BUNDLE_IDENTIFIER = com.majinnaibu.monstercards.MonsterCards.MonsterPreview;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES; SKIP_INSTALL = YES;
SWIFT_VERSION = 5.0; SWIFT_LANGUAGE_VERSION = 6;
TARGETED_DEVICE_FAMILY = "1,2"; TARGETED_DEVICE_FAMILY = "1,2";
}; };
name = Release; name = Release;
@@ -830,7 +830,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES; GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 14.0; IPHONEOS_DEPLOYMENT_TARGET = 15.0;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
ONLY_ACTIVE_ARCH = YES; ONLY_ACTIVE_ARCH = YES;
@@ -885,7 +885,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES; GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 14.0; IPHONEOS_DEPLOYMENT_TARGET = 15.0;
MTL_ENABLE_DEBUG_INFO = NO; MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
SDKROOT = iphoneos; SDKROOT = iphoneos;
@@ -908,7 +908,7 @@
DEVELOPMENT_TEAM = J793L9LQJ2; DEVELOPMENT_TEAM = J793L9LQJ2;
ENABLE_PREVIEWS = YES; ENABLE_PREVIEWS = YES;
INFOPLIST_FILE = MonsterCards/Info.plist; INFOPLIST_FILE = MonsterCards/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 14.0; IPHONEOS_DEPLOYMENT_TARGET = 15.0;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
@@ -916,7 +916,7 @@
MARKETING_VERSION = 0.6; MARKETING_VERSION = 0.6;
PRODUCT_BUNDLE_IDENTIFIER = com.majinnaibu.monstercards.MonsterCards; PRODUCT_BUNDLE_IDENTIFIER = com.majinnaibu.monstercards.MonsterCards;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0; SWIFT_LANGUAGE_VERSION = 6;
TARGETED_DEVICE_FAMILY = "1,2"; TARGETED_DEVICE_FAMILY = "1,2";
}; };
name = Debug; name = Debug;
@@ -934,7 +934,7 @@
DEVELOPMENT_TEAM = J793L9LQJ2; DEVELOPMENT_TEAM = J793L9LQJ2;
ENABLE_PREVIEWS = YES; ENABLE_PREVIEWS = YES;
INFOPLIST_FILE = MonsterCards/Info.plist; INFOPLIST_FILE = MonsterCards/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 14.0; IPHONEOS_DEPLOYMENT_TARGET = 15.0;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
@@ -942,7 +942,7 @@
MARKETING_VERSION = 0.6; MARKETING_VERSION = 0.6;
PRODUCT_BUNDLE_IDENTIFIER = com.majinnaibu.monstercards.MonsterCards; PRODUCT_BUNDLE_IDENTIFIER = com.majinnaibu.monstercards.MonsterCards;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0; SWIFT_LANGUAGE_VERSION = 6;
TARGETED_DEVICE_FAMILY = "1,2"; TARGETED_DEVICE_FAMILY = "1,2";
}; };
name = Release; name = Release;
@@ -955,7 +955,7 @@
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = J793L9LQJ2; DEVELOPMENT_TEAM = J793L9LQJ2;
INFOPLIST_FILE = MonsterCardsTests/Info.plist; INFOPLIST_FILE = MonsterCardsTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 14.0; IPHONEOS_DEPLOYMENT_TARGET = 15.0;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
@@ -963,7 +963,7 @@
); );
PRODUCT_BUNDLE_IDENTIFIER = com.majinnaibu.monstercards.MonsterCardsTests; PRODUCT_BUNDLE_IDENTIFIER = com.majinnaibu.monstercards.MonsterCardsTests;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0; SWIFT_LANGUAGE_VERSION = 6;
TARGETED_DEVICE_FAMILY = "1,2"; TARGETED_DEVICE_FAMILY = "1,2";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MonsterCards.app/MonsterCards"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MonsterCards.app/MonsterCards";
}; };
@@ -977,7 +977,7 @@
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = J793L9LQJ2; DEVELOPMENT_TEAM = J793L9LQJ2;
INFOPLIST_FILE = MonsterCardsTests/Info.plist; INFOPLIST_FILE = MonsterCardsTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 14.0; IPHONEOS_DEPLOYMENT_TARGET = 15.0;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
@@ -985,7 +985,7 @@
); );
PRODUCT_BUNDLE_IDENTIFIER = com.majinnaibu.monstercards.MonsterCardsTests; PRODUCT_BUNDLE_IDENTIFIER = com.majinnaibu.monstercards.MonsterCardsTests;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0; SWIFT_LANGUAGE_VERSION = 6;
TARGETED_DEVICE_FAMILY = "1,2"; TARGETED_DEVICE_FAMILY = "1,2";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MonsterCards.app/MonsterCards"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MonsterCards.app/MonsterCards";
}; };
@@ -1005,7 +1005,7 @@
); );
PRODUCT_BUNDLE_IDENTIFIER = com.majinnaibu.monstercards.MonsterCardsUITests; PRODUCT_BUNDLE_IDENTIFIER = com.majinnaibu.monstercards.MonsterCardsUITests;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0; SWIFT_LANGUAGE_VERSION = 6;
TARGETED_DEVICE_FAMILY = "1,2"; TARGETED_DEVICE_FAMILY = "1,2";
TEST_TARGET_NAME = MonsterCards; TEST_TARGET_NAME = MonsterCards;
}; };
@@ -1025,7 +1025,7 @@
); );
PRODUCT_BUNDLE_IDENTIFIER = com.majinnaibu.monstercards.MonsterCardsUITests; PRODUCT_BUNDLE_IDENTIFIER = com.majinnaibu.monstercards.MonsterCardsUITests;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0; SWIFT_LANGUAGE_VERSION = 6;
TARGETED_DEVICE_FAMILY = "1,2"; TARGETED_DEVICE_FAMILY = "1,2";
TEST_TARGET_NAME = MonsterCards; TEST_TARGET_NAME = MonsterCards;
}; };

51
update-pbxproj.py Normal file
View File

@@ -0,0 +1,51 @@
#!/usr/bin/env python3
"""Migrate MonsterCards.xcodeproj for Xcode 27 / Swift 6 / modern iOS SDK."""
import re
path = "iOS/MonsterCards.xcodeproj/project.pbxproj"
with open(path, 'r') as f:
content = f.read()
# --- Changes to apply ---
# 1. objectVersion from 52 → 58 (Xcode 14+)
content = re.sub(r'objectVersion = 52;', 'objectVersion = 58;', content)
# 2. LastUpgradeCheck from 1200 → 2700 (Xcode 27)
content = re.sub(r'LastUpgradeCheck = 1240;', 'LastUpgradeCheck = 2700;', content)
# 3. LastSwiftUpdateCheck from 1240 → 2700
content = re.sub(r'LastSwiftUpdateCheck = 1240;', 'LastSwiftUpdateCheck = 2700;', content)
# 4. IPHONEOS_DEPLOYMENT_TARGET: 14.4 → 15.0 (Preview appex)
# 5. IPHONEOS_DEPLOYMENT_TARGET: 14.0 → 15.0 (all others - minimum supported by current dependencies & Xcode SDK)
for old_val in ['14.4', '14.0']:
content = re.sub(
r'IPHONEOS_DEPLOYMENT_TARGET = ' + re.escape(old_val) + ';',
'IPHONEOS_DEPLOYMENT_TARGET = 15.0;',
content
)
# 6. SWIFT_VERSION: 5.0 → 6.0 across all targets
content = re.sub(
r'SWIFT_VERSION = 5\.0;',
'SWIFT_LANGUAGE_VERSION = 6;',
content
)
# Verify counts
v15 = len(re.findall(r'IPHONEOS_DEPLOYMENT_TARGET = 15\.0;', content))
v6 = content.count('SWIFT_LANGUAGE_VERSION = 6')
v52_old = content.count('objectVersion = 52')
v14_old = content.count('IPHONEOS_DEPLOYMENT_TARGET = 14.')
print(f"IPHONEOS_DEPLOYMENT_TARGET → 15.0 applied: {v15} times (expected 8)")
print(f"SWIFT_VERSION → SWIFT_LANGUAGE_VERSION = 6 applied: {v6} times (expected 8)")
print(f"Remaining objectVersion=52: {v52_old}")
print(f"Remaining IPHONEOS_DEPLOYMENT_TARGET = 14.x: {v14_old}")
with open(path, 'w') as f:
f.write(content)
print("\nDone. All changes written.")