블로그를 해보며 사실 처음 적어보는 느낌인 TIL 타이틀입니다.
그동안 사실상 TIL 타이틀보다는 해당 프레임워크 혹은 라이브러리, 언어 등에 대한 제목으로 작성했었습니다.
그런데 이제는 정말 처음 배우는 내용들일 것 같기 때문에 TIL이라는 제목으로 매일 적어보려 합니다.
하루키... 보고 있나요?
python, HTML, CSS, JS, React를 거쳐 당분간 머무르게 될 곳은 RN, React Native가 되겠습니다.
오늘 공식문서를 열심히 읽어보았는데, 아무래도 실전이 더 머리에 쏙쏙 들어올 것 같은 녀석이었습니다.
안타깝게도 오늘은 다양한 방식의 dev-env setting을 경험했기에 코드보다는 해당 이슈들을 어떻게 해결했는지로 시작해보려 합니다.
다행히 set에 실패하지는 않았습니다. 네. 오늘 최고의 업적이죠.
stackOverflow, github, RN doc, xcode, 국내외 포스팅 등을 가리지 않고 보며 구글의 바다를 헤엄쳤고, 결과적으로는 m1 silicon에서 RN을 사용할 수 있는 환경을 만들었습니다.
도중에 같은 m1을 쓰는 동료와 앓는 대화도 했습니다.
스티브... 보고 있나요?
RN setting의 대표적인 이슈만 해도 꽤 많이 있겠지만, m1 이슈가 유독 꽤 되었던 것 같습니다.
하나를 해결하면 다음이 문제였기도 하고, 대부분 포스팅에 작성된 솔루션이 매 버전마다 다른 것 같다는 느낌을 받았습니다.
그래서 21.08.30 오늘 기준으로 그나마 최신화된 세팅을 가져왔습니다.
흐름에 따라 진행될테니 천천히 해보시면 될 것 같습니다.
비교적 최신버전 사용해도 문제 없었던 것 같습니다. 14.17.0 버전으로 설치되어 있습니다.
이건 오히려 구버전이면 문제가 생깁니다.
Homebrew 3.2.9 를 이용중입니다. 해당 버전은 문제가 없었습니다.
6.14.13 버전으로 설치된걸 이어서 사용중입니다.
Node 공홈 기준으로 6.14.14가 최신버전입니다.
1.8.0_292 version 설치되어있습니다.
추가로 javac 또한 1.8.0_292 version입니다.
설치는 brew cask를 활용했습니다.
cask 활용법이 국내 포스팅들마다 다른데, 오늘 기준(21.08.30) 사용법은
brew install --cask adoptopenjdk8
와 같이 사용하시면 됩니다.
현재 최신버전 (App store에서 그냥 다운로드) 으로 설치되어 있으며, 빅서와도 큰 충돌은 없는 것 같습니다.
문제는 Xcode에서 한 번 쯤은 ios 폴더 내에 위치한 .xcodeproj를 실행한 뒤 build 관련 warning을 수동으로 패치해주어야 합니다.
현재 버전 기준으로는 Excluded Architectures에 따로 arm64를 적는 등의 방식은 유의미하지 않은 것 같습니다.
그러니 최초 프로젝트 실행 시 좌측 buildtime 블럭에 warning이 발생한다면 차분하게 더블클릭해서 설정을 변경해주시면 됩니다.
문제 없이 잘 돌아갑니다. 효자라고 볼 수 있겠습니다.
이 친구들이 setting 과정에서만큼은 만악의 근원이 아닌가 싶습니다.
먼저, 애초에 iterm에서 설치할 때 부터 m1을 확실하게 인식하고 있기 때문에 절대로 공식문서나 iterm 해결방법 조언 문구같은걸 믿어서는 안됩니다.
심지어 github issues를 띄워주는 친절을 베푸는데, 얼마나 많은 사람들이 희생되었을지 감이 잘 오지 않네요.
그래도 ios 개발에서는 필수이니 눈물 머금고 터미널에 타이핑합시다.
막상 다시 보니 별거 없는 두 줄인데 모르는 입장에서는 별의 별 솔루션을 테스트하며 하루종일 구글을 뒤져야합니다.
그러니 꼭 이 글을 보고 RN 세팅을 하는 m1 유저라면 저렇게 적는게 좋습니다.
추가로, 꼭 하나 체크해야 하는 것이 있습니다.
project ios 폴더 내 Podfile-lock 파일이 존재하는가?
없으면 그 때 cocoapods 와 ffi 를 의심하시면 됩니다.
있으면 춤을 추시면 될 것 같습니다.
cocoapods 문제를 확인하는 방법은
1. ios 폴더 내에서 pod install을 실행했을 때 error가 발생한다던가
2. pod deintegrate - pod install을 반복해도 Podfile-lock 이슈가 해결되지 않을 때, 대부분의 문제는 cocoapods 자체의 문제이니 cocoapods와 ffi 재설치를 권장드립니다.
3. 이 때, brew install을 사용하면 sudo gem 보다 비교적 수월하게 설치할 수 있기도 합니다.
공식문서나 국내외 포스팅 어딜 보든 이 부분은 큰 문제가 없으니 넘어가겠습니다.
막상 또 적고 보니 별 내용 없는 것 같습니다.
그런데 크롬창은 그렇지 않다네요..
그 외에도 전부 있고, 설치도 완벽하고, 방금 만든 프로젝트인데도 npm cache clean을 타이핑 해야 하는 node module issue가 있을 수도 있습니다.
또 어쩌면 다양한 솔루션들이 현재 의미가 없다는 것은 오히려 자잘한 이슈들이 모두 해결된 것으로 볼 수도 있습니다.
그러니 오늘도 고생하는 tool, library 제작자분들의 노고에 심심한 위로를 보내며 글을 마치겠습니다.
RN과 친해지기 대작전입니다.
hey hugo... i'm here...