Le Package.swift généré était invalide : la faute à une variable Xcode
Le build échouait sur « unterminated string literal » dans CapApp-SPM/Package.swift ligne 7, et en cascade sur trois « Missing package product » (CapApp-SPM, PolarBleSdk, GoogleSignIn). Rien de tout cela ne venait des paquets : SPM ne pouvait simplement pas lire un manifeste qui contenait platforms: [.iOS(.v"$)]. Cause racine, lue dans le code du CLI (util/spm.js -> ios/common.js) : getMajoriOSVersion cherche la chaîne « IPHONEOS_DEPLOYMENT_TARGET = » dans le pbxproj et prend les DEUX caractères qui suivent, sans vérifier que c'est un nombre. Xcode ayant rempli ce réglage avec "$(RECOMMENDED_IPHONEOS_DEPLOYMENT_ TARGET)" en ouvrant le projet, le CLI récupérait littéralement les caractères « "$ » et les recopiait dans le manifeste. Les quatre occurrences de cette variable étaient toutes sur CoachWatch et CoachWatchWidgetsExtension, où IPHONEOS_DEPLOYMENT_TARGET est INOPÉRANT : un target watchOS se règle par WATCHOS_DEPLOYMENT_TARGET. Les remplacer par 15.0 — la valeur du projet — ne change donc aucun comportement, et rend au CLI une valeur qu'il sait lire. Vérifié : la première occurrence rend désormais « 15 », le projet se reparse et les quatre targets sont intacts. ⚠️ Constaté au passage, non corrigé parce que c'est une décision produit : le target App est à IPHONEOS_DEPLOYMENT_TARGET = 26.0. L'app ne s'installera donc que sur iOS 26 ou plus récent. Si ce n'est pas délibéré, c'est Xcode qui l'a monté en appliquant ses réglages recommandés, et il faut le redescendre. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -689,7 +689,7 @@
|
|||||||
ENABLE_PREVIEWS = YES;
|
ENABLE_PREVIEWS = YES;
|
||||||
GENERATE_INFOPLIST_FILE = NO;
|
GENERATE_INFOPLIST_FILE = NO;
|
||||||
INFOPLIST_FILE = CoachWatch/Info.plist;
|
INFOPLIST_FILE = CoachWatch/Info.plist;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = "$(RECOMMENDED_IPHONEOS_DEPLOYMENT_TARGET)";
|
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
@@ -892,7 +892,7 @@
|
|||||||
ENABLE_PREVIEWS = YES;
|
ENABLE_PREVIEWS = YES;
|
||||||
GENERATE_INFOPLIST_FILE = NO;
|
GENERATE_INFOPLIST_FILE = NO;
|
||||||
INFOPLIST_FILE = CoachWatch/Info.plist;
|
INFOPLIST_FILE = CoachWatch/Info.plist;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = "$(RECOMMENDED_IPHONEOS_DEPLOYMENT_TARGET)";
|
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
@@ -928,7 +928,7 @@
|
|||||||
INFOPLIST_FILE = CoachWatchWidgets/Info.plist;
|
INFOPLIST_FILE = CoachWatchWidgets/Info.plist;
|
||||||
INFOPLIST_KEY_CFBundleDisplayName = CoachWatchWidgets;
|
INFOPLIST_KEY_CFBundleDisplayName = CoachWatchWidgets;
|
||||||
INFOPLIST_KEY_NSHumanReadableCopyright = "";
|
INFOPLIST_KEY_NSHumanReadableCopyright = "";
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = "$(RECOMMENDED_IPHONEOS_DEPLOYMENT_TARGET)";
|
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
@@ -970,7 +970,7 @@
|
|||||||
INFOPLIST_FILE = CoachWatchWidgets/Info.plist;
|
INFOPLIST_FILE = CoachWatchWidgets/Info.plist;
|
||||||
INFOPLIST_KEY_CFBundleDisplayName = CoachWatchWidgets;
|
INFOPLIST_KEY_CFBundleDisplayName = CoachWatchWidgets;
|
||||||
INFOPLIST_KEY_NSHumanReadableCopyright = "";
|
INFOPLIST_KEY_NSHumanReadableCopyright = "";
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = "$(RECOMMENDED_IPHONEOS_DEPLOYMENT_TARGET)";
|
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
|
|||||||
Reference in New Issue
Block a user