## 왜 ### Xcode 27.1 로컬 빌드 실행 즉시 종료 - iPhone Duo 시뮬레이터(iOS 27.1)에서 앱 실행 직후 종료 - 크래시: `EXC_BREAKPOINT` · `UIApplicationEvaluateRuntimeIssueForNoSceneLifecycleAdoption` - **원인:** 앱이 UIScene 생명주기를 쓰지 않음 - AppDelegate 만 있음. `UIApplicationSceneManifest` · SceneDelegate 없음 - iOS 27 SDK 로 빌드한 앱은 UIScene 사용 필수 - **참조:** Apple TN3187 (Migrating to the UIKit scene-based life cycle) ### 빌드 환경별 결과 | 빌드 | Xcode · SDK | 결과 | |---|---|---| | 로컬 빌드 | Xcode 27.1 · iOS 27.1 | 실행 직후 종료 | | EAS 시뮬레이터 빌드 (development) | Xcode 26.0 · iOS 26.0 | 정상 실행 | - 현재 스토어 앱은 영향 없음 - **조건:** `eas.json` 에 빌드 이미지 지정 없음. Expo SDK 54 기본 이미지(Xcode 26 계열) 사용 ### 대응이 필요해지는 시점 | 시점 | 영향 | |---|---| | Expo SDK 업그레이드 | 새 SDK 기본 이미지가 Xcode 27 이면 새 빌드 전부 실행 불가 | | Apple 의 최신 SDK 제출 의무화 | iOS 27 SDK 빌드만 받으면 스토어 업데이트 불가 | | 팀원 로컬 iOS 빌드 | Xcode 27 사용 시 지금도 실행 불가 | - **위험:** Apple 의무화 날짜 확인 전. 매년 봄 적용이 관례 ## 무엇을 ### 대응 방식 조사 - Expo SDK 54 · React Native 0.81.5 의 UIScene 지원 여부 확인 - UIScene 을 기본 지원하는 Expo SDK 버전 확인 - **대안:** Expo SDK 업그레이드로 해결 - **대안:** 현재 SDK 에서 config plugin 으로 SceneDelegate 추가 ### 이관 대상 - `ios/` 는 git 에 없음(CNG). 네이티브 변경은 config plugin 으로만 반영 | 대상 | 현재 처리 위치 | 이관 위치 | |---|---|---| | URL scheme 진입 (`piki://`) | `AppDelegate.application(_:open:options:)` | `scene(_:openURLContexts:)` | | 카카오 로그인 콜백 | `withKakaoLoginConfig.js` 가 AppDelegate openURL 에 주입 | scene URL 처리 | | Universal Link (`piki.day`) | `application(_:continue:restorationHandler:)` | `scene(_:continue:)` | | 콜드 스타트 링크 | `launchOptions` | `scene(_:willConnectTo:options:)` 의 `connectionOptions` | | 공유하기 진입 · 푸시 알림 탭 | expo-share-intent · expo-notifications | 각 라이브러리 지원 여부 확인 | ### 함께 정리 - Xcode 27 의 Pods 최소 iOS 버전 오류 - Alamofire · Sentry 등 리소스 타깃 최소 버전이 iOS 9-13 - Xcode 27 은 iOS 15 미만 대상 빌드 거부 - 로컬 확인 때 `IPHONEOS_DEPLOYMENT_TARGET=16.4` 덮어쓰기로 우회 - Podfile `post_install` 에서 최소 버전 맞춤 검토 - 카카오 SDK 초기화 전 URL 처리 시 종료 - JS(`app/_layout.tsx`)에서 카카오 SDK 초기화 - 네이티브 openURL 이 초기화 여부 확인 없이 `AuthApi.isKakaoTalkLoginUrl` 호출 - **결과:** 개발 빌드에서 `piki://` 진입 시 `KakaoSDK.redirectUri()` 에서 종료 재현 - **위험:** 운영 빌드의 콜드 스타트 재현 여부 확인 전 - scene 이관 때 같은 위치를 고쳐 함께 처리 ### 확인 - Xcode 27 로컬 빌드로 iOS 27 시뮬레이터 실행 - EAS 빌드로 iOS 26 기기 실행 - `piki://` 콜드 스타트 · 실행 중 진입 - 카카오 · Google · Apple 로그인 - 공유하기로 담기 - 푸시 알림 탭 진입 - Universal Link 진입
Activity