카테고리 없음

React Native (EXPO): 네이티브로 빌드 (Mac) + 세팅

별빛과하엘 2024. 1. 20. 18:25

React Native (Expo)프레임 워크에서 Prebuild 하기

 

Expo 를 사용하면, EAS를 이용하여 바로 앱을 앱스토어나 빠른 어플 등록과 배포를 도움을 줍니다. 정확히 EAS는 Expo Application Services약자로 앱 바이너리 빌드 프로세스를 단순화하고 최적화 하기위한 서비스중 하나라고 이야기합니다. 저는 개인 프로젝트를 위해서 Expo 를 사용하고있는데, 앱스토어에 올리기전에 미리 네이티브 코드로 변환을하고 싶어서 prebuild라는 명령어를 통해서 작업을 하기 시작했습니다.

 

 

 


문제의 시작 or 세팅 단계

npx expo prebuild

저는 위에서 이야기한 prebuild 세팅을 위해서 위의 명령어를 사용했습니다. 하지만 아래에 같은 오류가 발생하여 세팅하는 과정을 밟게 되었습니다.

 

 

여기에서는 어떻게 해결을 해야할지 자세히 검색해보다가. cocoapods 쪽이 문제가 있다는것을 알게되었습니다.

 

1. 첫번째로 그래서 `sudo gem install cocoapods` 설치

또 다른 문제가 발생하게 되는데,이것은 ruby버전이 안맞는걸로 보여 다시 루비 버전을 다시 설치 해줘야할거같습니다.

여기 이미지는 cocopods를 세팅을 다하고도 문제가 발생한 부분인데, 기본적으로 mac os를 업데이트를 해줘야합니다.

 

Error: Your Command Line Tools are too outdated.

Update them from Software Update in System Preferences.

 

(내가봤을땐 macos를 업데이트를 했으니 지우고 다시 설치해야하는거 같다.)

 

기본적으로 Mac os가 너무 오래되어서 이러한 문제가 계속 된다는것을 알게되었습니다. 그래서 Mac os를 업데이트를 해주고나서 Xcode 업데이트까지 마무리해주었습니다.

 

2. mac os 업데이트하기

 

 

 

3. 1번의 문제인 루비 버전 변경하기

https://www.delftstack.com/howto/ruby/update-ruby-version-in-macos 

 

Update Ruby Version in macOS

This article shows How to update Ruby version in macOS.

www.delftstack.com

해당 사이트를 참고하여 루비 버전을 번경을 시도하려고 했다.

그래서 명령어를 `rbenv install 2.7.2` 사용해서 루아를 설치하다가  아래의 에러가 발생했습니다.

 

 

도대체 원인이 뭘까 생각하다가. 안에 log를 확인해보면 된다고 하여 확인해본결과… 

안에 clang을 제대로 못찾는것을 발견하였다. 물론 clang을 설치하시겠습니까라는 문구가나와서 그거를 설치했는데도 불구하고, 안나왔다는것은 문제가 있었는데, 우선 거기에서 조금 더 깊게 원인을 해결해보겠습니다.

 

 

 

 

https://stackoverflow.com/questions/73775528/xcode-select-cannot-locate-clang-even-after-installing-command-line-tools

위에도 똑같은 이슈가 빌견한 질문인데, clang 설치해도 계속 똑같은 에러가 나왔다. 여기에서 그 해결방법은 알려주었습니다.

 

최신버전이고 다 맞는데 왜 안될까 찾아보다가

xcodebuild -runFirstLaunch를 통해서 최신버전인지 체크 해보고 아래의 명령어를 쳐줍니다.

 

sudo xcode-select -switch /Library/Developer/CommandLineTools 를 통해서 세팅!!

 

CommandLineTools를 날렸기때문에, 다시 연결을 해줘야합니다. (원래는 위에서 생략되었지만, 날리는 과정이 있습니다. 하지만 이 부분은 안하셔도 상관은없습니다.)

 

이렇게하고 clang이 제대로 작동이 되는지 확인해보자 clang —version 을 해보면, 잘되는것을 볼수 있다.. 이제 다음단계인 루비를 설치합니다.

 

 

드디어 성공했다… 이런거 보면 개발하는게 환경세팅이 절반을 차지하는거 같습니다.

그다음 루비를 성공했으니 그다음단계인 cocoapods 설치 단계로 넘어가보니다.

 

 

4. cocoapods 설치 

 

이슈 발생 이건 

 

버전을 안바꿔준 문제~~~ ㅎㅎ;;

 

버전 변경 완료.. 하지만 계속 적용이 완료가 안된다.. 방법을 찾아보자

 

제가 봤을땐 이 이야기 말대로 환경변수에 지정이 안되어있어서 문제가 발생하는거 일수도 있다. 왜냐하면 그냥 루비를 사용한것이 아니라 rbenv를 통해서 세팅을 했기때문에, 환경변수 세팅을 해줘야합니다. 잘모르시겠다면 밑에 명령어를 치면서 따라오시면 됩니다.

 

env | grep PATH -> 이것은 해당 컴퓨터의 환경변수를 체크하는 명령어입니다..

export PATH="$HOME/.rbenv/bin:$PATH"  -> rbenv에서 세팅한 루비환경을 환경변수에 세팅하는 것입니다.

 

이렇게 환경변수에 세팅을 하니 버전이 2.6.x에서 2.7.2로 변경이 되었습니다.

 

그리고나서 내가 원하는 cocoapods 설치를 다시 진행해보았다.

드디어 완료가… ㅠㅜ 되었다. 그다음 cocoapods으로 인한 오류로 expo의 prebuild 옵션 을 다시 사용해보겠습니다. 여기에서 prebuild란 네이티브 코드로 변환하는 작업을 의미합니다.

 

 

xcrun: error: unable to lookup item 'Path' in SDK 'iphoneos' 다시 이런 에러가 발견..

제가 봤을땐 xcode-select를 다시 설치하면서 다시 재설정해줘야할게 많은거 같습니다. .. 아 … xcode 업데이트 안해줬네… 그것도 해줘야합니다..

 

5. xcode 업데이트 및 시뮬레이터 설치

 

헐… 또에러 발견이 되었는데… 

 

 

sudo xcode-select --switch /Applications/Xcode.app  를 쳐주면서 꼭 세팅해야합니다.

\

휴 힘들어… ㅋㅋㅋ 그래도 마무리 지어서 다행이다. 옛날에 flutter 할때는 이정도는 아니였는데, 많이 환경이 바뀌긴한거 같다.