iOS 시뮬레이터까지는 했다.
하지만 iOS 앱만 확인할 순 없잖아..! 안드로이드도 잇따구..!
해서 설치 시작.
사실 어제 실행해본 run-ios가 로제타 없이 돌아간 것 같아서 이게 어떻게 됐지..? 하는 마음에 서치하다가
안드로이드 스튜디오 깔고 하는 방법이 잘 정리돼있는 위 블로그를 참조했다.
안드로이드 스튜디오를 설치해준다.
블로그에서 'Arctic Fox'를 설치하라고 돼있었는데 사이트에는 범블비라고 적혀 있었다. 이전 버전인가 싶어서 찾아봤는데, 명칭이 다른 것 같다. 그냥 설치 해 줌.
설치 과정에선 딱히 할 게 없다.
안드로이드 스튜디오를 잘 깔았으면 들어가준다.
메인 화면이 이렇게 뜨는데, 여기서 하단의 More Actions
를 클릭해 ADV Manager
로 들어가준다.
그럼 이런 창이 나오는데, 밑에 Create Virtual Device
를 눌러 새 가상 기기를 만들어주면 된다.
기기 설정은 내가 원하는대로 맞춰주고, Finish를 눌러주면 아래와 같이 기기가 생성된다.
시뮬레이터를 실행하기 전에, 프로젝트와 셸의 환경을 설정해줘야 한다.
프로젝트의 android
디렉토리로 간 뒤, [local.properties](http://local.properties)
라는 파일을 하나 만들어준다.
eunbin 대신 본인 username을 쓰면 된다.
sdk.dir = /Users/eunbin/Library/Android/sdk
다음으로 ~/.zshrc
를 열어 ANDROID_SDK
경로를 추가해준다.
역시 eunbin 자리에 username 쓰기!
export ANDROID_SDK=/Users/eunbin/Library/Android/sdk
그리고 android 디렉토리에 있는 [gradle.properties](http://gradle.properties)
파일을 열어 Flipper 버전을 0.91.1
로 수정해준다. 코드는 0.75.1 버전으로 쓰여져 있기 때문에 숫자만 살짝 바꿔주면 된다.
FLIPPER_VERSION=0.91.1
그리고 ./gradlew clean
을 해 준다.
여기까지 하고 잘 되는 분들은 다시 Android Simulator 실행 으로 건너뛰세용.
나는 여기서 문..제..?가 생겼는데 ./gradlew clean
을 하라고 해서 했는데
This operation couldnt be completed. Unable to locate a Java Runtime.
이딴 에러가 떴다.
역시 갓글링을 해보았더니 java가 없어서 그런거란다.
M1으로 바꾸면서 아무거나 막 다운받는다고 다 되는 게 아니란 걸 깨닫곤, java의 어떤 버전이 M1에서 유효한지를 검색해봤다.
Oracle에서 제공하는 버전은 아직 Apple Silicon을 지원하지 않는다고 한다. 그래서 찾아낸 다른 방법! AZUL에서 다운받으면 된다.
근데 또 난 아무 의식 없이 OpenJDK 16 버전을 다운받았었다.
다운 완료하고, 환경변수까지 잘 지정해줬다고 생각하고 다시 clean 을 해 보니 이번엔 다른 문제가 발생했다.
Could not compile settings file '.../settings.gradle'.
다시 열심히 구글링을 해 보니 해당 에러에 포함된 내용 중에 Unsupported class file major version 60
라는 말이 Java 16이 아직 제공하지 않는 기능을 썼다는 거란다.
관련 링크 : Android Studio: Could not compile settings file
그래서 Java 8 버전으로 다시 다운받았고, Java는 맥 상에서 자동으로 최상위 버전을 기본값으로 설정해주기 때문에 Java 16은 쓰레기통으로 갖다 버렸다.
⇒ 버린 뒤 환경변수 재적용을 안 했더니 에러 한 번 더 남... source
해주세요..
여차저차해서 다시 clean을 해 보니, 이번엔 잘 됐다.
자바 환경변수 세팅은 아래 글을 참고했다. 그냥 하던 대로 ~/.zshrc
에 넣어주고 source
해 주면 된다 (MacOS 11 Big Sur 기준).
관련 링크 : How to Set $JAVA_HOME environment variable on macOS - Mkyong.com
./gradlew clean 까지 잘 마쳤으면, run을 할 차례다.
하지만 run을 하기 전에 먼저 아까 만들어놨던 가상 기기를 실행시킨다.
플레이 버튼처럼 생긴 저걸 누르면, 내가 세팅한 스펙의 안드로이드 가상 기기가 화면에 뜬다.
그럼 이제 진짜최종런을 하면 된다.
npx react-native run-android
하면..!!!
... 낄낄
또 에러가 떴다.
Failed to launch emulator. Reason: No emulators found as an output of
emulator -list-avds
.
Failed to install the app. Please accept all necessary Android SDK licenses using Android SDK Manager: "$ANDROID_HOME/tools/bin/sdkmanager --licenses".
버전 문제라느니... 무슨 문제라느니... 라는 기타 등등 아주 많은 이야기들이 있었는데, 그 중 SDK 라이선스를 체크해줘야 한다는 것이 있었다.
다시 안드로이드 스튜디오를 들어가서,
Preferences → Appearance&Behavior → System Settings → Android SDK
탭으로 들어가면, 뭐가 설치 돼있고, 안돼있는지 확인할 수 있다.
나는 저기에서 Android SDK Command-line Tools(latest)
항목이 Not Installed 로 돼있었고,
해당 항목을 체크한 뒤 하단의 Apply 를 해 Install 할 수 있었다.
이렇게 체크 해 주고, 스택오버플로우 형님들의 조언에 따라 ~/.zshrc
안에 아래 내용을 넣어 줬다. <your_computer_name> 에는 본인 맥 username을 넣어주면 된다.
export ANDROID_SDK=/Users/<your_computer_name>/Library/Android/sdk
export PATH=/Users/<your_computer_name>/Library/Android/sdk/platform-tools:$PATH
관련 링크 : React Native adb reverse ENOENT
source
를 잊지 않고 해 주면, 진짜 최종 끝이 난다.
다시 RUN 해 주면...!!
npx react-native run-android
흑흑... 드디어 실물(?) 영접..,,