M1에서 ARM64 안드로이드 에뮬레이터 실행
백그라운드
M1 프로세서의 경우 ARM64 아키텍쳐를 사용하기 때문에 오히려 안드로이드 에뮬레이터가 더 잘 최적화되지 않을까? 라는 생각이 들었습니다.
ARM64 에뮬레이터 다운로드
AVD 이미지 선택 화면에서 Other images
탭을 선택하면 역시 ARM64용 이미지들이 등장합니다.
저는 API 31 기반에 Google API 가 설치된 이미지를 다운로드 했습니다.
에뮬레이터 실행
그런데 이게 왠걸? 실행하자마자 아래와 같은 에러 메시지를 출력하면서 AVD 가 실행되지 않습니다.
The emulator process for avd XXX was killed.
그래서 해결방법을 찾기 시작했습니다.
원인 파악
터미널에서 AVD 명령어를 직접 실행해서 원인을 찾았습니다.
❯ cd Library/Android/sdk/emulator
❯ emulator -list-avds
Pixel_2_API_31
❯ emulator -avd Pixel_2_API_31
Could not launch '/Users/ben/Library/Android/sdk/emulator/../emulator/qemu/darwin-x86_64/qemu-system-aarch64': No such file or directory
하지만 해당 경로 darwin-x86_64/qemu-system-aarch64
에는 아무런 파일이 존재하지 않았습니다. AVD를 실행할 때 x86_64 하위 폴더를 기본값으로 사용하는 것으로 보여서 관련 키워드로 구글링을 했는데 이 Github 이슈를 발견했습니다.
Just run darwin-aarch64-replace.sh and everything fine.
위의 명령어가 AVD 관련 아키텍쳐 설정을 ARM64 아키텍쳐로 변경하는 스크립트로 보입니다. 그래서 emulator
폴더를 확인해보니 해당 스크립트가 있었습니다.
해결방법
ARM64용 AVD 다운로드
위에서 발견한 스크립트를 실행했더니 아래와 같이 파일을 다운로드 받아서 압축을 해제합니다.
❯ ./darwin-aarch64-replace.sh
curl -L https://github.com/google/android-emulator-m1-preview/releases/download/0.2/emulator-darwin-aarch64-0.2-engine-only.zip -o emulator-darwin-aarch64-0.2.zip
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 682 100 682 0 0 1804 0 --:--:-- --:--:-- --:--:-- 1804
100 91.8M 100 91.8M 0 0 412k 0 0:03:47 0:03:47 --:--:-- 1040k
unzip emulator-darwin-aarch64-0.2.zip
Archive: emulator-darwin-aarch64-0.2.zip
creating: emulator-darwin-aarch64-0.2/
inflating: emulator-darwin-aarch64-0.2/NOTICE.csv
inflating: emulator-darwin-aarch64-0.2/qsn
inflating: emulator-darwin-aarch64-0.2/qemu-img
#...
inflating: emulator-darwin-aarch64-0.2/emulator
rm: ./qemu-img: No such file or directory
해당 폴더를 확인해보니 제대로 작업이 마무리 안되서 emulator
폴더를 교체해야 했습니다.
AVD 실행
다시 AVD 를 실행해 봅니다.
정상적으로 AVD 가 실행되었습니다! 🎉
댓글남기기