1. 문제 상황
npm run start-ios:development, 즉 ios를 실행했을 때 발생한 에러이다.
특이하게 변경한 것은 없다. RN의 WebviewContainer 컴포넌트를 조금 손 본 정도이다.
2. 해결 과정
- iOS의 문제인가? Android로 실행해보자
npm run start-android:staging- 안드로이드는 개발 환경 웹 url(development)이 실행이 안되기에, staging으로 실행했다.
- Android는 실행이 잘된다.
- iOS의 문제이다.
- iOS - 개발 환경 실행의 문제인가? iOS - staging환경에서 실행해보자
- 동일하게 에러가 발생한다 iOS의 문제이다.
- 수정사항으로 인한 문제인가? 현재까지 수정사항 stash하고 실행해보자
git stash
- 동일하게 에러가 발생한다. RN 수정사항으로 인한 에러는 아니다.
- staging과 development 모두 에러가 발생했으니, Next의 수정사항으로 인한 에러도 아니다.
- 캐싱 문제인가?
- xcode > product > clean Build Folder, clean All Issues
- settings > storage > Xcode Cache, Project Build Data and Index 삭제
-
iPhone SE로 실행해서 그런가?
- 기존 실행 : iPhone 15pro → SE로 실행해보니 이 또한 안된다
-
RN의 문제인가? XCode에서 실행해보자
정체 모를 에러가 발생한다. 넌 뭐니 ..
-
Simulator 캐싱 오류
- Simulator > Device > Erase all content and settings
-
맥북 껐다가 켜기
-
기기 변경
-
develop브랜치로 이동 후
npm i && cd ios && pod install && cd ..로 해당 브랜치의 변경 사항을 pod에도 적용 후, 다시 실행했다.- Thread 1: signal SIGABRT? Swift에러라는데, 모르겠다..
-
배포 타겟이 잘못되었다.
- React Native 이슈에서 발견한 해결방법이다.
// ios/Podfile
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0'
end
end
위 문구를 추가하고, pod폴더, node_modules, package-lock.json을 삭제하고 npm i > npx pod-install을 수행하니 해결이 되었다.
3. 결론
pod버전의 문제였다.
react native는 react와 달리, Android와 iOS 모두 지원하기 위해서 각 네이티브 코드를 건드려야 한다는 점에서 신경 써야할 것이 많다. 단순히 react만 할 줄 안다고 해결할 수 없는 문제들이 많다.