diff --git a/Runnect-iOS/Runnect-iOS.xcodeproj/project.pbxproj b/Runnect-iOS/Runnect-iOS.xcodeproj/project.pbxproj index dbf3aac3..57f03f82 100644 --- a/Runnect-iOS/Runnect-iOS.xcodeproj/project.pbxproj +++ b/Runnect-iOS/Runnect-iOS.xcodeproj/project.pbxproj @@ -28,6 +28,7 @@ 71F206782F38949F00DF721E /* RNWatch Watch App.app in Embed Watch Content */ = {isa = PBXBuildFile; fileRef = 71F206772F38949F00DF721E /* RNWatch Watch App.app */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; 71F206912F38A00000DF721E /* WatchSessionService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71F206902F38A00000DF721E /* WatchSessionService.swift */; }; 71F206D42F38A78B00DF721E /* NMapsMap in Frameworks */ = {isa = PBXBuildFile; productRef = 71F206D32F38A78B00DF721E /* NMapsMap */; }; + 71F207012F3D000000DF721E /* Sequence+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71F207002F3D000000DF721E /* Sequence+.swift */; }; 71F7804E2B0893B600B53253 /* MarathonTitleCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71F7804D2B0893B600B53253 /* MarathonTitleCollectionViewCell.swift */; }; 71F780502B0893D700B53253 /* MarathonMapCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71F7804F2B0893D700B53253 /* MarathonMapCollectionViewCell.swift */; }; 9D18A25F11CB07E21EC2C48A /* NativeAdCVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D18A25E11CB07E21EC2C48A /* NativeAdCVC.swift */; }; @@ -113,7 +114,6 @@ CE58759E29601476005D967E /* LoadingIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE58759D29601476005D967E /* LoadingIndicator.swift */; }; CE5875A029601500005D967E /* Toast.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE58759F29601500005D967E /* Toast.swift */; }; CE5875A2296015A2005D967E /* NetworkLoggerPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE5875A1296015A2005D967E /* NetworkLoggerPlugin.swift */; }; - 71F207012F3D000000DF721E /* Sequence+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71F207002F3D000000DF721E /* Sequence+.swift */; }; CE5875A4296015D2005D967E /* Encodable+.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE5875A3296015D2005D967E /* Encodable+.swift */; }; CE591EA1296D5EB5000FCBB3 /* PrivateCourseResponseDto.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE591EA0296D5EB5000FCBB3 /* PrivateCourseResponseDto.swift */; }; CE6655C8295D849F00C64E12 /* StringLiterals.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE6655C7295D849F00C64E12 /* StringLiterals.swift */; }; @@ -229,6 +229,7 @@ 71BAD06B2B24D1F70061E31D /* UserProfileVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserProfileVC.swift; sourceTree = ""; }; 71F206772F38949F00DF721E /* RNWatch Watch App.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "RNWatch Watch App.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 71F206902F38A00000DF721E /* WatchSessionService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WatchSessionService.swift; sourceTree = ""; }; + 71F207002F3D000000DF721E /* Sequence+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Sequence+.swift"; sourceTree = ""; }; 71F7804D2B0893B600B53253 /* MarathonTitleCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MarathonTitleCollectionViewCell.swift; sourceTree = ""; }; 71F7804F2B0893D700B53253 /* MarathonMapCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MarathonMapCollectionViewCell.swift; sourceTree = ""; }; 9D18A25E11CB07E21EC2C48A /* NativeAdCVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NativeAdCVC.swift; sourceTree = ""; }; @@ -302,7 +303,6 @@ CE58759D29601476005D967E /* LoadingIndicator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoadingIndicator.swift; sourceTree = ""; }; CE58759F29601500005D967E /* Toast.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Toast.swift; sourceTree = ""; }; CE5875A1296015A2005D967E /* NetworkLoggerPlugin.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkLoggerPlugin.swift; sourceTree = ""; }; - 71F207002F3D000000DF721E /* Sequence+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Sequence+.swift"; sourceTree = ""; }; CE5875A3296015D2005D967E /* Encodable+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Encodable+.swift"; sourceTree = ""; }; CE591EA0296D5EB5000FCBB3 /* PrivateCourseResponseDto.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrivateCourseResponseDto.swift; sourceTree = ""; }; CE6655BE295D82E200C64E12 /* .gitkeep */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitkeep; sourceTree = ""; }; @@ -1590,19 +1590,19 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = "RNWatch Watch App/RNWatch Watch App.entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2026.0218.1812; + CURRENT_PROJECT_VERSION = 2026.0426.0350; DEVELOPMENT_TEAM = 8Q4H7X3Q58; ENABLE_PREVIEWS = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu17; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_CFBundleDisplayName = Runnect; -INFOPLIST_KEY_NSHealthShareUsageDescription = "러닝 중 심박수와 칼로리 정보를 표시하기 위해 건강 데이터 접근이 필요합니다."; -INFOPLIST_KEY_NSHealthUpdateUsageDescription = "러닝 운동 기록을 건강 앱에 저장하기 위해 건강 데이터 쓰기 권한이 필요합니다."; -INFOPLIST_KEY_UIUserInterfaceStyle = Dark; -INFOPLIST_KEY_WKApplication = YES; -INFOPLIST_KEY_WKCompanionAppBundleIdentifier = "com.runnect.Runnect-iOS"; + INFOPLIST_KEY_NSHealthShareUsageDescription = "러닝 중 심박수와 칼로리 정보를 표시하기 위해 건강 데이터 접근이 필요합니다."; + INFOPLIST_KEY_NSHealthUpdateUsageDescription = "러닝 운동 기록을 건강 앱에 저장하기 위해 건강 데이터 쓰기 권한이 필요합니다."; INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + INFOPLIST_KEY_UIUserInterfaceStyle = Dark; + INFOPLIST_KEY_WKApplication = YES; + INFOPLIST_KEY_WKCompanionAppBundleIdentifier = "com.runnect.Runnect-iOS"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -1630,19 +1630,19 @@ INFOPLIST_KEY_WKCompanionAppBundleIdentifier = "com.runnect.Runnect-iOS"; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = "RNWatch Watch App/RNWatch Watch App.entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2026.0218.1812; + CURRENT_PROJECT_VERSION = 2026.0426.0350; DEVELOPMENT_TEAM = 8Q4H7X3Q58; ENABLE_PREVIEWS = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu17; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_CFBundleDisplayName = Runnect; -INFOPLIST_KEY_NSHealthShareUsageDescription = "러닝 중 심박수와 칼로리 정보를 표시하기 위해 건강 데이터 접근이 필요합니다."; -INFOPLIST_KEY_NSHealthUpdateUsageDescription = "러닝 운동 기록을 건강 앱에 저장하기 위해 건강 데이터 쓰기 권한이 필요합니다."; -INFOPLIST_KEY_UIUserInterfaceStyle = Dark; -INFOPLIST_KEY_WKApplication = YES; -INFOPLIST_KEY_WKCompanionAppBundleIdentifier = "com.runnect.Runnect-iOS"; + INFOPLIST_KEY_NSHealthShareUsageDescription = "러닝 중 심박수와 칼로리 정보를 표시하기 위해 건강 데이터 접근이 필요합니다."; + INFOPLIST_KEY_NSHealthUpdateUsageDescription = "러닝 운동 기록을 건강 앱에 저장하기 위해 건강 데이터 쓰기 권한이 필요합니다."; INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + INFOPLIST_KEY_UIUserInterfaceStyle = Dark; + INFOPLIST_KEY_WKApplication = YES; + INFOPLIST_KEY_WKCompanionAppBundleIdentifier = "com.runnect.Runnect-iOS"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -1783,7 +1783,7 @@ INFOPLIST_KEY_WKCompanionAppBundleIdentifier = "com.runnect.Runnect-iOS"; CODE_SIGN_ENTITLEMENTS = "Runnect-iOS/Runnect-iOSDebug.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2026.0426.0008; + CURRENT_PROJECT_VERSION = 2026.0426.0350; DEVELOPMENT_TEAM = 8Q4H7X3Q58; GENERATE_INFOPLIST_FILE = NO; INFOPLIST_FILE = "Runnect-iOS/Info.plist"; @@ -1823,7 +1823,7 @@ INFOPLIST_KEY_WKCompanionAppBundleIdentifier = "com.runnect.Runnect-iOS"; CODE_SIGN_ENTITLEMENTS = "Runnect-iOS/Runnect-iOS.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2026.0426.0008; + CURRENT_PROJECT_VERSION = 2026.0426.0350; DEVELOPMENT_TEAM = 8Q4H7X3Q58; GENERATE_INFOPLIST_FILE = NO; INFOPLIST_FILE = "Runnect-iOS/Info.plist"; diff --git a/Runnect-iOS/Runnect-iOS/Info.plist b/Runnect-iOS/Runnect-iOS/Info.plist index c6c5e9af..b8ce202c 100644 --- a/Runnect-iOS/Runnect-iOS/Info.plist +++ b/Runnect-iOS/Runnect-iOS/Info.plist @@ -53,7 +53,7 @@ CFBundleVersion - 2026.0426.0008 + 2026.0426.0350 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/Runnect-iOS/fastlane/Fastfile b/Runnect-iOS/fastlane/Fastfile index 32bb912f..2a4b938c 100644 --- a/Runnect-iOS/fastlane/Fastfile +++ b/Runnect-iOS/fastlane/Fastfile @@ -58,14 +58,16 @@ platform :ios do ) end - # 빌드 + # 빌드 (Xcode 26 SPM submodule 이슈 회피: 격리된 SPM 캐시 + plugin/macro validation skip) build_app( project: "Runnect-iOS.xcodeproj", scheme: "Runnect-iOS", configuration: "Release", clean: true, export_method: "app-store", - export_xcargs: "-allowProvisioningUpdates" + export_xcargs: "-allowProvisioningUpdates", + cloned_source_packages_path: "/tmp/runnect-spm-packages", + xcargs: "-skipPackagePluginValidation -skipMacroValidation" ) # App Store 업로드 + 심사 제출