[RN] m1 ReactNative 0.70 버전 설치(0.71 실패)

Aubri·2023년 1월 17일
0

Aubri on ReactNative

목록 보기
1/5

예전에 1년도 전에 일할 때 사용하고 한 번도 사용하지 않은 React Native.
이번에 창업을 하기 위해 다시 깔아야했다.

npx react-native init project

를 하니까 ios 용 프로젝트 세팅이 되어 있지 않다는 워닝이 떴다.
그래서 하나씩 차근차근 설치를 하던 도중 여러가지 문제를 맞닥뜨려 기록하게 되었다.

node, watchman 설치

brew를 통해 node와 watchman 을 설치해야 한다.

brew install node
brew install watchman

이 때, 나는 m1 이라 Roesetta2 를 사용 중이었기 때문에

arch -arm64 brew install node
arch -arm64 brew install watchman

arch -arm64 를 삽입해주어야 한다.
brew install 을 할 때는 모두 이 명령어를 추가해주면 된다.

Ruby 설치

여기서 정말 오래걸렸다.
맥은 기본적으로 2.6.x? 버전인가 2.5.x 버전을 사용하고 있는데(시스템에서)
RN이 업데이트가 되어서 그런지 몰라도 요구하는 Ruby 버전이 2.7.6 으로 업그레이드 되었다.

그래서 Ruby manager중 하나인 rbenv 를 사용해 다운로드 해주려고 했으나,

이런 오류가 떴다. 그래서 구글링을 해보니 ventura 에서는 rbenv로 Ruby 사용이 불가능하다고 하는 것 같다...?ㅠㅠㅠ

frum 이라는 것을 활용하라고 한다. ruby-build discussion 에서..
https://github.com/rbenv/ruby-build/discussions/2098

이거는 또 다른 참고 자료.. 이렇게 하지는 않았다.
https://www.moncefbelyamani.com/how-to-install-xcode-homebrew-git-rvm-ruby-on-mac/

Flag 를 활용한 방법
https://blog.francium.tech/install-ruby-on-mac-m1-apple-silicon-with-rbenv-9253dde4e34a

근데 위 방법을 하지 않고 openssl을 활용한 방법을 찾아 그대로 진행했다.
https://github.com/rbenv/ruby-build/issues/1409

brew install openssl
export RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@1.1)"
rbenv install 2.7.6

하하 에러 발생 결국 frum 도 시도 해보았다.
https://mac.install.guide/ruby/14.html

arch -arm64 brew install frum

#frum ./zshrc 에 추가하기
open -e ~/.zshrc

### ~/.zshrc~
# enable frum
eval "$(frum init)"

frum install 2.7.6

그러나.. openssl 을 잘못 설정? 한 덕분에 2.7.6 은 깔렸으나 디펜던시가 없는? 요상한 상태가 되어 에러를 내뱉고 uninstall 도 안되는 지경에 이르렀다.

https://www.rubyonmac.dev/how-to-install-ruby-on-macos-12-6-apple-silicon

정말 다양한 방법을 시도해보았다.. 이 프로그램?에 대한 기본 개념이 없어서 내가 직접 코드를 수정해보지는 못하고 구글링으로 플래그들을 추가하다보니 정말 답답했다ㅠ

finally..
https://stackoverflow.com/questions/72520711/rbenv-build-failures-macos
이 분이 나를 도우셨다 하ㅠㅠ

CFLAGS="-Wno-error=implicit-function-declaration" RUBY_CONFIGURE_OPTS='--with-readline-dir=/usr/local/opt/readline/' arch -x86_64 rbenv install 2.7.6
CFLAGS="-Wno-error=implicit-function-declaration" RUBY_CONFIGURE_OPTS='--with-readline-dir=/usr/local/opt/readline/' rbenv install 2.7.6

위에거는 x86 버전을 까는 거 같아서 밑에걸로 다시 깔았다.

참고 https://github.com/rbenv/ruby-build/discussions/2090

감사합니다

NOTE: to activate this Ruby version as the new default, run: rbenv global 2.7.6
이런 노트가 뜨기는 했는데 일단

rbenv versions
rbenv global 2.7.6

쳐보면 깔린 버전과 system 이 잘 뜨기는 했고, 이후에

gem install bundler

만 한 다음 바로 프로젝트 이닛을 해봤다. 에러가 떠서

open ~/.zshrc

에서 아래 코드를 추가해주고

export PATH={$Home}/.rbenv/bin:$PATH && \
eval "$(rbenv init -)"
source ~/.zshrc

변경한 설정을 저장한 뒤 다시 젬 인스톨을 해주고 실행해보았다.
이렇게 하면 ruby -v 을 했을 때, 내가 설정한 2.7.6 버전이 뜰 것이다.

npx react-native init test

이렇게 해서 하면 각종 오류들이 뜨는데, 코코아팟즈 디펜던시 에러 등등 많은 오류가 뜬다. 그래서
https://github.com/CocoaPods/CocoaPods/issues/11641
이 곳의 링크를 참고해 인스톨 과정을 스킵한 뒤, 차근차근 인스톨 해나갔다.
m1 에서는 pod install 이걸 지원하지 않는 것 같아서 아마 앞으로도 새 프로젝트를 생성할 때는 단계별로 구분해서 해야할 것 같다.

그리고 하나 더 중요한 것, 0.71 버전은 릴리즈 된지 얼마 안돼서 아직 디펜던시들과 호환 오류가 있는 듯 하다. Hermes-engine, min-ios-version? 등 다양한 에러가 발견되어 결국 "0.70" 버전으로 다시 진행했고,
그에 따라 ruby도 2.7.5 로 다시 설치해줘야 했다

아무튼

npx react-native init testproject --version 0.70.0 --skip-install
cd testproject
yarn install
cd ios
bundle install      #arch -arm64 bundle install
bundle exec pod install     #arch -arm64 bundle exec pod install

이렇게 순차적으로 진행해 에러가 없는지 확인해준다. 잘 되는 것을 확인할 수 있었다!!!!
드디어ㅠㅠ 장장 3일 간의 삽질 끝에.. 성공했다
m1 으로 rn 개발하기 진짜 너무 힘들다ㅋㅋㅋㅋㅋㅋ flutter 는 어떨지 모르겠지만, 예전에 개발할 때도 느낀건데 따로 설정하고 해야하는 것들이 너무 많다.

그리고 이제 만약 yarn ios 했는데도 시뮬레이터가 켜지지 않는 경우,

xcrun simctl erase all

#booted 에러
xcrun simctl list
xcrun simctl shutdown <simulator id>    
xcrun simctl shutdown "iPhone 6 Plus"   // where id is the name of device in the list 

https://blckchainetc.tistory.com/entry/Error-Unable-to-boot-device-in-current-state-Booted
이걸 참고해서 작성해주면 끝!

그럼 이렇게 잘 실행되는 모습을 볼 수 있다.
하 정말 멀고도 험한 rn 시작의 길 고생했다!!

profile
Delivering Happiness.

4개의 댓글

comment-user-thumbnail
2023년 2월 21일

감사합니다. 많은 도움이 됐습니다.

1개의 답글
comment-user-thumbnail
2023년 3월 6일

감사합니다 덕분에 해결하였습니다.!

1개의 답글