View

300x250

이번에는 Expo Go 문제로 잠시 찾아왔다. 사이드 프로젝트로 RN을 만져보고 있는데, iOS 에뮬레이터쪽의 실행은 문제가 없었는데 안드로이드에서는 Expo Go 앱 자체가 실행이 안되는 (스플래시 화면이 나오자마자 튕겨버리는) 문제가 있었다.

(대충 Expo Go의 영정사진)

 

새로운 Expo 프로젝트를 만들어서 빈 프로젝트를 빌드했을 때에도 동일한 문제가 발생했다.

 

근데 이게 Expo 에서 앱 빌드를 안누르고 그냥 에뮬레이터 상에서 Expo 앱을 누르기만 해도 Expo Go 앱 자체가 꺼져버리는거라, 코드나 빌드 상의 문제가 있는 것 같지는 않았고 Expo Go 자체의 문제로 크게 의심되었다.


문제의 원인을 찾아보기 위해서 Android Studio 에서 Logcat을 연결해 에뮬레이터 자체에서 뱉어내는 로그들을 찾아보려 했다.

 

 

그 중에서 빨간 색으로 눈에 띄게 문제로 지목되는 녀석은 libc++_shared.so 라는 파일이 없다는 것.

 


  
4781-4781 AndroidRuntime pid-4781 E FATAL EXCEPTION: main
Process: host.exp.exponent, PID: 4781
com.facebook.soloader.SoLoaderDSONotFoundError: couldn't find DSO to load: libc++_shared.so

 

"프로젝트의 Expo 버전에 영향을 받아서 에뮬레이터에 설치된 Expo Go 가 잘못 설치된게 아닐까?" 라는 의심이 들어서, Expo 가 최신인지 확인해줬다.

 

현재 내가 사용하는 expo-cli 버전은 6.1.0 이였고, 글을 작성하는 현재(25.03.11.)를 기준으로는 6.3.10 버전이 나왔다. GPT 형님께서는 Expo 버전의 문제일 수 있다고 알려줘서, 우선 Expo 버전 업그레이드를 진행해줬다.

 

여전히 동일한 문제. 그래서 나는 아무래도 Expo Go 와 에뮬레이터 자체의 궁합에서 문제가 발생한 것이라 판단했다.


로그 쪽에서 봤을 때에는 에뮬레이터에서 arm64-v8a 아키텍처를 사용할 때 경로에서 libc++_shared.so 라는 파일을 찾아 불러와야 하는데, 해당 파일을 찾지 못해 뻑이 나버리는 케이스로 보였다. 여기에 대해서도 서치를 해보니 설정된 에뮬레이터의 아키텍처가 arm64-v8a가 아닐 수도 있다는 내용이 있었다.

 

그치만 나는 arm64-v8a 를 사용하고 있는걸? 이것도 패스


그렇게 이것저것 시도해보다가 왠걸? 다른 에뮬레이터로 실행하니까 동작을 한다 ;;;

 

변경된 것은 에뮬레이터 기종 뿐인데...

 

테스트를 위해서 아예 새로운 에뮬레이터를 생성해서 Expo Go 실행을 시도봤고, Pixel 6 에서는 실행되지 않던게 Pixel 4 에서는 실행이 되는 것을 확인했다.

 

두 에뮬레이터 모두 동일한 시스템 이미지를 적용해서 API 35 / arm64-v8a 아키텍처를 사용해줬는데 다르게 결과가 나왔다는게 약간 의아하다... 후...

 

결론

혹시 에뮬레이터에서 Expo Go 앱이 자꾸 "expo go keeps stopping" 라는 비명을 지르면서 혼자 죽어버리면 에뮬레이터 기종을 예전 모델로 변경해보자. API 버전이나 API Level, ABI 등을 건드리는건 빌드상의 사이드 이펙트가 발생할 가능성이 있을 것 같은데, 에뮬레이터 기종 변경은 그런 부분으로부터 어느정도 자유로울 것 같다.

320x100
Share Link
reply
반응형
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30