notes
IOS -트러블슛
iOS 앱 트러블슈팅의 빌드·서명·실행 오류 점검과 대응 메모.
iOS는 빌드가 한 번 깨지면 Xcode 로그가 장황해서 어디부터 보는지 헤매기 쉽다. 내가 자주 막힌 것만 증상 → 원인 → 손본 순으로 모아 둠.
서명 / 프로비저닝
- Signing for requires a development team → Xcode → Signing & Capabilities에서 Team 선택. Apple ID만 있으면 Personal Team으로도 시뮬/실기기 개발은 됨
- Provisioning profile doesn't include signing certificate → 인증서 만료·팀 변경. Developer 포털에서 인증서/프로파일 재발급 후 Xcode Refresh
- Failed to verify code signature → 실기기 신뢰(설정 → 일반 → VPN 및 기기 관리) 안 한 경우 많음
빌드 / 의존성
- No such module 'XXX' → CocoaPods면
pod install후.xcworkspace로 열기. SPM이면 File → Packages → Reset Package Caches - Undefined symbol / Linker error → Bridging Header 경로, Framework Embed & Sign,
Other Linker Flags확인 - Command PhaseScriptExecution failed → Build Phases의 Run Script(예: 오래된 React Native / Firebase 스크립트)가 실패. 로그 맨 아래 실제 shell 에러를 본다
런타임
- White screen / 빈 WebView → ATS(
NSAppTransportSecurity), 잘못된 URL, JS bridge 타이밍.WKNavigationDelegatedidFail에 breakpoint - EXC_BAD_ACCESS → dangling pointer,
unowned로 죽은 객체 접근. Instruments Zombies - 메인 스레드 UI 경고 → 네트워크 콜백에서 UI 건드림.
DispatchQueue.main.async
시뮬레이터 / 기기
- 시뮬이 안 뜨면 Device → Erase All Content and Settings, 또는 Derived Data 삭제 (
~/Library/Developer/Xcode/DerivedData) - 실기기만 느리면 Debug → Debug Executable 끄고 Release 스킴으로 확인
체크 순서 (내가 쓰는 루틴)
- Clean Build Folder (⇧⌘K)
- Derived Data 비우기
.xcworkspace로 다시 열기 /pod deintegrate && pod install- Signing Team·Bundle ID 재확인
- 그래도 안 되면 에러 맨 아래 빨간 한 줄만 구글링 (위쪽 노이즈 무시)