react-native 삽질 기록 (에러 해결)

구남규·2021년 8월 29일
1
post-custom-banner

우선 원하는 기능은 걸음수를 측정하는 만보기 기능과 카카오 로그인 기능을 구현 하고자 했지만 에러를 만났고 해결하는 과정이 너무 험난했고 다시 에러를 만났을때 기억이 안날 것 같아서 기록하기로 했다

만보기 기능은 expo-sensors에 pedometer를 사용하기로 했고 유저에 허가를 받기 위해
react-native-permissions를 사용해야 했다
https://github.com/zoontek/react-native-permissions
카카오 로그인은 제일 많이 사용하는 react-native-seoul를 사용하기로 했다
https://github.com/react-native-seoul/react-native-kakao-login

안드로이드에서는 별 에러가 없었고 네이티브 환경에서 아주 잘 빌드가 되고 실행이 되었다

맥을 사용하여 Ios에서 xCode 빌드를 하려는 순간 끝이 보이지 않는 에러에 마주쳤다

  1. pod install 안되는 문제
  2. react-native-permissions 설치 후 빌드 실패
  3. react-native-seoul 설치 후 빌드 실패

pod install 안되는 문제

우선 pod install을 사용하려면 cocoapods가 설치 되어 있어야 하고 공식문서 커맨드 라인에 따라서

sudo gem install cocoapods

시도 해봤지만 설치가 안됐다 이 당시에는 pod install과 ios에 대해 거의 무지한 상태 였기 때문에 간단한 에러임에도 불구하고 오래 걸려 해결 했었다
찾다 보니 brew를 이용해서 인스톨하고 링크를 걸어주는 방법으로 해결했다

brew cleanup -d -v
brew install cocoapods
brew link cocoapods

[참고] https://stackoverflow.com/questions/20939568/error-error-installing-cocoapods-error-failed-to-build-gem-native-extension

react-native-permissions 설치 후 빌드 실패

run ios나 xcode에서 빌드시 500줄 넘는 라인에 대한 에러가 생기며

error Failed to build iOS project. We ran "xcodebuild" command but it exited with error code 65.

이런 에러가 발생했다
에러 메시지가 명확하지 않았고 검색을 했을때 나오는 해결법도 너무 광범위 해서 삽질하면서 해결하는데 아주 오래 걸렸다 podfile을 수정해보기도 하고 삭제하고 다시 설치해보기도 했지만
[참고] https://zejeworld.tistory.com/112
블로그의 4번째 방법으로 에러를 해결했다

Build Phases에서 Copy Pods Resources를 삭제하고 ⌘+shift+k 누른 뒤 ⌘+b로 새로 빌드

해결은 했지만 왜 이 에러가 발생했는지는 아직도 모르겠고 해결 방법에 대해서도 의문이 든다
xcode에 대한 더 많은 공부가 필요 할 것 같다

react-native-seoul 설치 후 빌드 실패

error Failed to build iOS project. We ran "xcodebuild" command but it exited with error code 65.
VSC상에서 똑같은 에러가 떳다
그냥 빌드를 못하면 대부분 저 에러 메세지를 보여주나?
그래서 xcode상에서 빌드를 하니 좀더 상세한 에러 메세지를 얻을 수 있었다
xcode에 익숙치 않아 안쓰다보니 에러 해결에 더 오래 걸린 것 같다
하지만 읽어도 모르겠는 이상한 에러 메시지었다

Undefined symbol: protocol conformance descriptor for Swift.Int64 : Swift.SignedInteger in Swift

Undefined symbol에 대한 에러가 100줄정도 발생했다 swift 관련 에러임을 확인하고 아래 방식으로 해결했다

  1. xcode로 프로젝트를 연다
  2. 프로젝트 폴더안에 비어있는 스위프트 파일을 생성
  3. ProjectName-Bridging-Header.h 파일 생성

[참고] https://github.com/mxcl/PromiseKit/issues/1059
https://stackoverflow.com/questions/31716413/xcode-not-automatically-creating-bridging-header

결론은 Xcode 빌드 설정이 여전히 자동 생성된 브리징 헤더 파일의 경로를 유지하기 때문에 ProjectName-Bridging-Header.h 파일을 임의로 생성해 줘야 된다는 것이다

마무리

찾다가 보니 리액트 네이티브 상에서 Ios빌드는 꾀나 자주 실패하고 이슈가 많았다
많은 사람들이 빌드 실패 문제로 고민을 하고 해결 방법을 공유하고 있었다
[참고] https://github.com/react-native-community/upgrade-support/issues/138

삽질을 하면서 배워낸 디버깅팁은 xcode에서 에러메시지가 좀더 명확해서 xcode내에서 빌드를 하면서 디버깅 하는 것이 해결에 훨씬 도움이 된다는 것이다
앞으로 앱을 개발하면서 더 많은 에러가 생기겠지만, 이번 삽질로 디버깅 실력이 조금 성장해서 해결하는데 도움이 된다고 생각된다

post-custom-banner

0개의 댓글