티스토리 뷰

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

이렇게 느린 이유는 안드로이드 리얼 에뮬레이터에서 돌아가는게 아니라서 그럽습니다.
아이폰 시뮬레이터는 같은 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를 사용하지 못 할 때 대처


댓글
  • 프로필사진 안드료 글 잘 읽었습니다. 감사합니다. 2012.03.05 21:08
  • 프로필사진 신규하 감사합니다. 2012.03.22 11:30 신고
  • 프로필사진 감사합니다 잘 읽었습니다만 궁금한 점이 있습니다. 저는 netcfg 명령어를 입력하면 eth0는 없이 lo만 나타납니다. 네트워크 설정은 여기 내용 이외에 더 할 것은 없는건가요? 2012.03.11 23:35
  • 프로필사진 신규하 제 경험으로는 내부에서 DHCP로 IP를 잡지 못할 경우 네트워크가 잘 안 잡히는 경우가 있었습니다.
    이 방법이 잘 되지 않는다면, 설정에서 고정아이피를 선택하는 메뉴가 있습니다.
    여기서 아이피 설정을 시도해 보세요.
    2012.03.22 11:29 신고
  • 프로필사진 뭐래냐? 너무 너무 감사합니다....
    그동안 느려터진 에뮬로 고생이 이만저만이 아니었는데
    덕분에 한결 쉽게 개발하게되었네요~~ 감사합니다.
    2012.03.20 02:57
  • 프로필사진 신규하 도움이 되었다니.. 기분이 좋네요..
    감사합니다.
    2012.03.22 11:30 신고
  • 프로필사진 박세훈 너무 도움이 되고 있습니다.
    2012.03.23 08:36
  • 프로필사진 신규하 너무 까지 ^^* 감사합니다.
    좋은 프로그램 만드세요~
    2012.03.23 11:39 신고
  • 프로필사진 김병준 인터넷에 연결되어 있지 않으면
    이클립스 디바이스와 버추얼박스는 연결이 되지 않는건가요? ㅠㅠ
    노트북에다가 해놓고 netcfg 했더니 네트워크 연결이 안되있어서
    lo 127.0.0.1 eth0는 0.0.0.0 이길래 로컬로라도 연결하려고 했는데
    되질 않네요 ㅠㅠㅠ 항상 인터넷이 연결되어있어야만 사용이 가능한건가요.,.
    그냥 로컬 아이피로는 안되는건가요..
    2012.04.15 16:22
  • 프로필사진 신규하 예... 디바이스에 IP를 배정해서 연결이 되어야만 디버깅을 할 수 있습니다.
    혹시, 네트워크 모드를 host로 해서 시도해 보세요.
    될지는 모르겠지만, 가능 할지도 모르겠습니다.
    http://suriman.tistory.com/4
    이 글을 참고 하세요.
    2012.04.18 10:02 신고
  • 프로필사진 신규하 이 방법데로 해 보시고 잘 되신다면, 댓글 좀 달아 주세요. ^^* 2012.04.18 10:02 신고
  • 프로필사진 옆집 임군 ㅋㅋ 멋지군 좋은 팁이야.. 2012.04.18 10:55
  • 프로필사진 신규하 ㅎㅎㅎ 이걸로 개발해 봤는데..
    정말 속도가 5배는 빠른거 같더라구...
    그런데 http://tudoll.tistory.com/
    여기 접속이 안 되네... 닫은건가?
    2012.04.20 10:56 신고
  • 프로필사진 지나가던대학생 와 학교에서 안드로이드 개발 실습을 하는데 에뮬레이터 속도를 보고 때려칠려다 이 글 보고 개발하면서도 평정심을 되찾게 되었습니다. 너무 감사드리고 감사의 마음으로 인터넷 연결 없이도 할 방법을 연구해보니 [브릿지 어댑터] -> [호스트 전용 어댑터]로 바꿔 주시고 [평소 쓰시던 유/무선 물리네트워크] -> [VirtualBox Host-Only Network]로 하시면 netcfg에 VirtualBox Host-Only Network의 ip가 뜹니다. 이후에 adb connect 하시면 인터넷 없이도 가능하십니다 참고하시면 좋을듯 2012.04.26 22:51
  • 프로필사진 신규하 오~ 훌륭한 팁 감사드립니다.
    잘 쓰신다니.. 기쁘네요 ^^*
    2012.04.29 23:36 신고
  • 프로필사진 cosmos intel i5(ivy bridge) cpu 에 win7 64bit 쓰고 있는데요. x86 이라고 하니까 쓸 수 있는건지 없는건지 모르겠네요..? ^^;;; 2012.06.19 18:52
  • 프로필사진 신규하 저 역시 win7 64bit를 쓰고 있습니다.
    잘 되니까 걱정 마시고 하세요~
    2012.06.21 00:31 신고
  • 프로필사진 sang 궁금한게 있습니다.
    저는 단순하게 어플설치 및 실행을 목적으로 설치를 했습니다.
    일단
    vi /mnt/grub/menu.lst 이부분 부터 막히네요.
    글쓰는 부분이 열리는데 제대로 글이 안써집니다.

    그래서 건너뛰고 구동은 했는데 궁금한점은 apk을 가지고 어플을 설치하는 방법을 모르겠네요.
    혹시 아신다면 답변 부탁드립니다. 감사합니다.

    2012.06.27 16:50
  • 프로필사진 신규하 vi 에디터기가 사용하기 좀 까다롭습니다.
    vi 에디터기 사용법을 인터넷에서 검색하셔서 사용해 보세요.
    그리고 apk 파일은 설치 파일입니다.
    이메일로 전송하거나, 드랍박스 같은 크라우드 서비스를 이용 하시던지 해서.. 보내서 받으신 후 파일탐색기를 이용해서 실행해 주시면 설치가 됩니다.
    도움이 되었으면 좋겠네요.
    감사합니다.
    2012.06.27 23:38 신고
  • 프로필사진 nick vi /mnt/grub/menu.lst 를 입력하면 vi 편집기가 뜨는데요

    화살표로 움직이면 화면이 오른쪽으로 이동할 거에요.
    거기 블로그에 나온 위치정도로 이동한 후에
    키보드 i 를 누르면 입력모드로 바뀝니다. 이 때 해상도 설정 부분을 입력하시구요.

    다 입력하셨으면 ESC 를 눌러주세요. 그럼 입력모드에서 빠져나옵니다.

    그리고 : 를 누르면 왼쪽 하단에 입력창이 나오는데 여기서 wq 입력 후 엔터를 치면 수정한 내용이 저장되고 에디터를 빠져나옵니다.
    2012.06.29 02:24
  • 프로필사진 nick 궁금한게 있는데요. VirtualBox 에서 안드로이드를 띄웠을 때 Back 이나 Home 버튼은 어떻게 작동하죠?
    2.3 버전은 마우스 오른쪽클릭하면 back 이 작동하는거 같은데
    4.0 버전은 따로 없는거 같네요.
    2012.06.29 04:10
  • 프로필사진 신규하 4.0은 설치를 안 해 봐서 모르겠습니다.
    하지만. 2.3에서는 ESC버튼을 누르면 Back버튼 역할을 했습니다.

    참아보니.. 이렇네요..

    HOME <- windows key left
    BACK <- esc
    MENU <- menu-key

    http://elinux.org/Android_x86 여기를 참고해 주세요.
    2012.06.29 14:45 신고
  • 프로필사진 케이비 님의 글 읽고 시도하고 또 읽고 시도하고... 마침내 성공했어요~~
    정말 감사드립니다
    제가 온라인으로 하는 어플작성중이여서 테스트에 부담이 컸는데
    많은 도움되었습니다
    근데 한가지 질문있습니다
    제 어플이 워낙 메모리를 만이 잡아먹다나니 (게임어플이여서) 도중에 팅기네요
    그래서 원인 찾아보니까 힙메모리사이즈가 32메가로 되있더라구요
    힙메모리사이즈를 늘클수있게 설정할 수 있는 방법이 없을가요?
    답변 부탁드립니다^^^

    참고로 vm이미지는 android-x86-2.2-r2-eeepc.iso 를 사용했습니다.
    2012.07.07 17:32
  • 프로필사진 신규하 https://sites.google.com/site/sokolkosta/internal-blog/increaseheapsizeofandroid-x86os

    위 방법으로 하면 늘릴 수 있다고 합니다.

    하지만, 이게 좀 엄하게.. android-x86os의 설정을 변경한 후 소스를 새로 컴파일 해야 줘야 한다고 하네요 -_-;;
    2012.07.10 11:26 신고
  • 프로필사진 bemaru 감사합니다.~! 퍼가도되나요? 티스토리는 어찌 퍼가는거지... 2012.07.11 13:40 신고
  • 프로필사진 신규하 컨트롤 C, V로 ^^;;;
    퍼가지 마시고.. 링크를 보관 해 주시면 안 될까요?
    개인적으론 내 블로그에 남의 글 복사해서 올리는건 이해가 안 가서요.
    스크랩은 에버노트나 Delicious 같은 서비스를 사용해서 하세요~
    같은 내용이 인터넷에 여기저기 널려 있는 것도 공해 입니다.
    2012.07.12 16:49 신고
  • 프로필사진 레브네인 감사합니다.
    덕분에 쾌적한 개발환경이 되었네요.
    그런데 노트북에서 실행하다보니 IP주소가 계속 바뀌는데, 이걸 실행할때마다 안드로이드를 잡아줘야 하나요?
    자동으로 잡아주는 방법은 고정IP주소 사용하는 방법밖에 없나요?
    2012.08.26 21:35
  • 프로필사진 신규하 잘 쓰신다니.. 기분이 좋네요..
    http://gyuha.tistory.com/453
    여기를 참고해 보세요.
    네트워크를 추가하고 static으로 잡아서 사용 하셔도 됩니다.
    2012.08.27 15:15 신고
  • 프로필사진 seo 좋은 정보 감사합니다.
    그런데 vi /mnt/grub/menu.lst 이부분을 딱 치면 ~표시만 줄기차게 나오는건 왜 그런건요?
    2012.09.11 00:54
  • 프로필사진 신규하 ~은 무시 하셔도 됩니다.
    빈칸이라는 소리 입니다.
    2012.10.05 17:04 신고
  • 프로필사진 LeeRoJun 어댑터 1로는 네트웍 연결도, ADB연결도 안되서
    어댑터2 추가 후 했는데 ADB는 됐는데 네트웍이 안되네여 ㅠㅠ
    2012.09.28 11:12
  • 프로필사진 LeeRoJun 4.0-RC2 입니다. 태블릿쪽이라서.. 2012.09.28 14:15
  • 프로필사진 신규하 http://gyuha.tistory.com/453
    이 글을 참고해 보세요.
    2012.10.05 17:19 신고
  • 프로필사진 신규하 요약하면.. 아래와 같이 설정하면 될 겁니다.
    Adapter 1 : NAT # (eth0) - 인터넷 연결용
    Adapter 2 : Host Only #(eth1) - adb를 이용해 연결용
    2012.10.05 17:19 신고
  • 프로필사진 rexx 좋은 정보 감사합니다.
    GPU 가속화로 사용하다 블루스크린 몇 번 떠서 멘붕왔었는데,
    이렇게 우회해서 사용하게 되었네요.
    감사합니다.
    2012.10.23 19:40
  • 프로필사진 신규하 저두 GPU 가속을 써 봤는데.. 신통치 않더라구요.. 2012.12.13 17:26 신고
  • 프로필사진 Tobi 좋은글 감사합니다. 한가지 질문을 드리겠습니다.

    에뮬레이터에서 PC 카메라와 연동이 되나요?

    카메라 작동을 테스트 하기위해서 필요한데 방법을 모르겠습니다.

    감사합니다.
    2012.12.11 17:09
  • 프로필사진 신규하 기능에 보니..
    V4l2 Camera support
    이렇게 나오네요..
    잘 파 보면 될 것 같기도 한데 ^^;;
    혹시 해 보시면.. 알려주세요..
    2012.12.13 22:02 신고
  • 프로필사진 coconut 감사합니다. 덕분에 개발 속도가 엄청 빨라질거 같아요.ㅎㅎ

    질문이 하나 있는데요. 기기 해상도 변경은 안되나요? 1366x768에서 작업중인데 세로 해상도가 기기보다 작아서 스크롤바가 표시되네요.ㅠㅠ
    2013.01.04 17:10
  • 프로필사진 coconut 자문자답하게 되네요. 480x800 부분에 360x600으로 고치고 넣어주니까 됩니다. vi 편집기 :wq 한 다음에 exit을 안해서 그랬네요. 혹시 하시는분들 꼭 exit 해주세요

    감사합니다~
    2013.01.04 17:27
  • 프로필사진 CODE adb connect이 안되어서 문의 드립니다. unable to connect to 아이피주소로 나오네요. 무엇이 문제 일까요? 2013.06.08 10:56
  • 프로필사진 신규하 아마도.. ip를 못 받은거 같습니다.
    netcfg
    로 ip를 확인해 보세요..
    그리고, 환경이 hdcp 환경이 아니라서.. ip를 못 받았다면
    http://gyuha.tistory.com/453
    이 글을 참고해 보세요.
    2013.06.10 18:01 신고
  • 프로필사진 가시나무왕 좋은글 감사드립니다,
    세팅후 실행시 초기 부팅화면의경우 정상적으로 세로 사이즈이지만 그이후 안드로이드 로고후부터
    다시금 가로모드로 세팅이되어 실행이되는 상태입니다
    몇번을 다시 처음부터 차근차근해보아도 동일한데 혹시 이유를 알고계시나요?
    2014.03.18 17:17
  • 프로필사진 신규하 포스팅 중에서 `안드로이드용 개발 해상도 지원하기` 부분에 보면..
    해상도가 있는데.. 그거 때문이 아닌가 싶네요..
    시작 할 때 그 세팅으도 선택 할 수 있었던 걸로 기억하는데.. 가물 가물 하네요..
    전 요즘은 블루스택을 사용하고 있습니다.
    이게 훨씬 편하더라구요.
    물론 게임 개발 할 때 지만, 이것도 어플은 가로세로 모드가 좀 불편하게 있더군요.
    2014.03.28 02:23 신고
댓글쓰기 폼