2012년 7월 8일 일요일

[안드로이드] SDK tool revision20 이후 에뮬레이터의 segmentation fault 문제 - 진행중

새로운 컴퓨터를 받아 64비트 환경에 Ubuntu 10.04를 설치했는데, 안드로이드 에뮬레이터를 실행하면 segmentation fault가 뜨고 있다.

검색해보니 관련 문제에 대한 토론이 진행되고 있다. 하지만 최근 문제라 아직 결과는 나오지 않았다.
http://code.google.com/p/android/issues/detail?id=34233

64비트 시스템과 nvidia 를 함께 사용하는 환경에서 나타나는 문제인 듯 하다. 리누스가 얼마전 nvidia 에게 중지를 세운 감정을 조금이나마 알 것 같다.
하지만 정황상 nvidia 보다는 구글쪽 실수인 것도 같다는 근거 없는 심증이 든다.


ICS 이상 버전
워크어라운드라긴 뭐하지만, 아래의 방법으로 IceCream Sandwitch 이상 버전을 타겟으로 하는 에뮬레이터는 실행이 가능하다. 하위 버전은 이 방법도 안통한다.
<AVD-name-that-target-ICS-or-later> 은 ICS 이상을 타겟으로 생성한 AVD의 이름으로 교체하면 되겠다.

$ emulator -gpu on @<AVD-name-that-target-ICS-or-later>


이클립스를 선호한다면, 이클립스의 AVD 설정 중 H/W property 에 GPU를 추가해서 yes로 값을 바꿔주자. ICS 이상 버전의 AVD는 이걸로 에뮬레이터가 잘 돌아간다.




HoneyComb 이하 버전
HoneyComb 이하 버전의 에뮬레이터를 돌려야 한다면, sdk 설치 디렉토리 아래 있는 libOpenglRender.so의 이름을 아무걸로나 바꿔준다.
다음과 같이.


mv <path-for-sdk>/tools/lib/libOpenglRender.so libOpenglRender.so.bak


에뮬레이터가 라이브러리를 찾지 못해서 소프트웨어 렌더러를 사용한다는 경고를 내뱉지만 에뮬레이터는 잘 실행된다.
에뮬레이터 속도를 높이기 위해 하드웨어 가속을 하는 방향으로 여러가지 개선이 있었던 걸로 아는데, 그러다가 생긴 문제인 듯 하다.

댓글 없음:

댓글 쓰기