← 글 목록

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 타이밍. WKNavigationDelegate didFail에 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 재확인
  • 그래도 안 되면 에러 맨 아래 빨간 한 줄만 구글링 (위쪽 노이즈 무시)