본문 바로가기
Programming/Android

안드로이드 에뮬레이터 속도 개선하기..

by 신규하 2012. 2. 27.
안드로이드를 개발 할려고 하면, 에뮬레이터의 속도가 정말 절망적입니다.
아이폰 시뮬레이터는 정말 쾌적한 환경이라는 생각이 들죠..

이렇게 느린 이유는 안드로이드 리얼 에뮬레이터에서 돌아가는게 아니라서 그럽습니다.
아이폰 시뮬레이터는 같은 x86 호스트에서 돌아가고 있습니다. 그래서 빠르게 작동을 하죠. 하지만, 안드로이드 에뮬레이터는 x86프로세스 위에서 ARM processor를 에뮬레이터를 하고 있습니다. 이러면서 오버헤드가 생겨서 겁나게 느린겁니다.

하지만, 개발할때는 ARM processor의 에뮬레이터가 꼭 필요 한게 아니죠. 정상적으로 어플리케이션 동작만 하면 땡큐 한거죠.

Android-x86
다행히 안드로이드 OS를 x86 CPU에 포팅한 오픈소스 프로젝트가 있습니다.
  • http://www.android-x86.org/
이 프로젝에서는 여러가지의 버전별로 여러가지의 이미지를 제공합니다. 안드로이드 SDK에서 릴리스 하는 모든 이미지가 있는 것은 아니지만 사용 하는데는 별 지장이 업습니다.

아래 다운로드 URL에 가서 자신이 원하는 버전의 이미지를 받으면 됩니다.



여기서는 2.3버전을 사용했습니다. 그리고 되도록이면 eeepc를 받으세요. 다른 이미지는 VirtualBox에서 네트워크를 사용하는데 문제가 발생할 수 있어서, 별 설정이 필요 없는 eeepc를 추천합니다.

Android-X86을 VirtualBox에 설치하기
설치를 하기 전에 VirtualBox 홈페이지에 가서 VirtualBox 어플리케이션을 다운로드 받아서 설치 합니다.
  • https://www.virtualbox.org/wiki/Downloads
설치가 잘 완료 되었으면 VirtualBox 관리자에서 "새로 만들기" 버튼을 눌러서 새로운 이미지를 만들어 줍니다.

설정은 아래와 같이 진행합니다.
  • 가상머신 이름 : Android_2.3 (나중에 설정에서 사용 됩니다.)
  • 운영체제 종류
    • 운영체제 : Linux
    • 버전 : Other Linux
  • 메모리 : 1024 (원하는 용량으로 선택하세요)
  • 부팅 하드디스크
    • 새 가상 디스크 만들기
  • 파일 형식
    • VDI (VirtualBox 디스크 이미지)
  • 저장소 정보
    • 동적 할당
  • 가상 디스크 파일 위치 및 크기
    • 원하는 대로

이미지가 만들어 졌으면 네트워크 옵션을 브리지 어탭터로 수정 합니다.


그리고, 저장소에서 CD/DVD드라이버에 다운로드 받은 ISO이미지를 넣어 줍니다.

이제 부팅을 하시면 아래 화면이 나옵니다.

여기서 Installation - Install Android-x86 to harddisk를 선택합니다.

  1. Choose Partition
    • Create/Modify partitions
  2. cfdisk
    • [New] -> [Primary] -> 엔터 -> [Bootable] -> [Write] -> yes -> [Quit]
  3. Choose Partition
    • sda1  linux   VBOX HARDDISK
  4. Choose filesystem
    • ext3 -> Confirm -> Yes
  5. Do you want to install boot loader GRUB?
    • Yes
  6. Do you want to install /system directory as read-write?
    • Yes
  7. Android-x86 is installed successfully.
    • Create a fake SD card -> 수정 -> 엔터
  8.  Reboot
완료 되면, 저장소에서 iso이미지를 제거 합니다.

이렇게 설치하면 정상적으로 안드로이드가 실행 되는 것을 볼 수 있습니다.


안드로이드용 개발 해상도 지원하기
하지만, 가로가 길쭉한 해상도로 나옵니다. 안드로이드폰용 어플을 개발 하기 적절하지 않은 해상도 입니다.
가로 해상도를 지원해 보겠습니다.

VirtualBox가 설치된 폴더로 가서 cmd 창을 실행합니다.

VBoxManage setextradata "Android_2.3" "CustomVideoMode1" "480x800x16"

그리고 위와 같이 입력해 줍니다. 여기서 Android_2.3은 가상장치를 만들때 사용했던 이미지 이름 입니다.

이제 가상 머신을 작동 시키고 Debug mode를 시작합니다.

그리고 아래와 같이 입력을 합니다.
mount -o remount,rw /mnt
vi /mnt/grub/menu.lst



여기에 보시면 부팅할 때 선택하는 모드가 있습니다.
각 내용을 변경 하시면 됩니다.
여기서는 1번째 옵션을 그대로 사용하고 해상도만 추가해 보겠습니다.

kernel /android-2.3-RC1/kernel quiet root=/dev/ram0 androidboot_hardware=generic_x86 acpi_sleep=s3_bios,s3_mode DPI=240 UVESA_MODE=480x800 SRC=/android-2.3-RC1



작성을 완료 하셨다면 :wq로 저장하시고 exit를 명령을 쳐 주시고 머신을 중단하고 새로 시작합니다. 그냥..재시작로 하게 되면 값이 적용이 안 되는 경우가 있습니다.




멋찐 가로 해상도가 보이죠?
아.. 마우스가 움직이지 않으시죠? 이럴때는 머신 -> 마우스 통합 비활성화 를 선택하시면 마우스 커서가 보입니다.

개발환경 설정하기
안드로이드에서 Alt-F1을 누릅니다.
여기서 커맨드 창이 나오면
netcfg

를 쳐 봅니다.
여기서 eth0 옆에 나오는 IP를 보시면 됩니다.
여기서는 192.168.10.43이 나왔습니다.



보고 나서는 ALT-F7을 눌러서 원래 화면으로 돌아 갑니다.


윈도우에서 android platform-tools 디렉토리로 이동해서
커맨드 창을 열고 netcfg에서 나온 IP와 함께 아래와 같이 입력 합니다.
adb connect 192.168.10.43




이렇게 설정하고 나면 이클립스에서 안드로이드 개발을 하실때 VirtualBox에 어플이 실행 됩니다.

이제 이클립스를 띄워 보시면,
디바이스 창에 에뮬레이터가 보일 겁니다..



열심히 프로그램을 짜주시면 됩니다~ ^^*



추가로  DHCP 환경이 지원되지 않아서 문제가 되시는 분은 아래 글을 참고 하세요.

Android x86 에뮬레이터를 사용 하는데 DHCP를 사용하지 못 할 때 대처


댓글