안드로이드 에뮬레이터에서 AVD 만들고 실행하기. (Running App on Android Emulator)

2019. 1. 2. 11:26


1. 안드로이드 앱 개발 실행 환경.

안드로이드 스튜디오(Android Studio)에서 안드로이드 앱을 개발하고 나면, 보통 안드로이드 운영체제가 탑재된 단말에서 직접 테스트합니다. "안드로이드 스튜디오를 실행 중인 PC"에 "개발자 모드가 활성화된 단말 기기"를 USB로 연결한 다음, 앱을 설치하고 실행하는 것이죠. 사용자가 실제로 사용하는 안드로이드 기기에서의 앱 동작을 시험할 수 있기 때문에, 시험 결과의 신뢰성을 확보할 수 있는 장점이 있습니다.


그런데 만약, 사용 중이던 안드로이드 단말 기기를, 고장 또는 분실 등의 이유로 사용할 수 없게 된다면 어떻게 될까요? 새로운 단말이 준비될 때까지 개발을 중단해야 할까요?
또 다른 가정으로, 보유 중인 단말은 FHD(1080x1920) 해상도의 5인치 스마트폰인데, 그보다 큰 10인치 QHD(2560x1440) 태블릿에서의 UI 검증이 필요하다면, 태블릿 기기를 새로 구매해야 할까요? 매번 새로운 화면 크기를 시험할 때마다?

1.1 안드로이드 에뮬레이터(Android Emulator)

앞서 가정했던 여러 상황을 위해, 안드로이드 개발 환경에는 실제 하드웨어가 없어도 앱을 개발하고 테스트할 수 있는 안드로이드 에뮬레이터(Emulator)가 제공됩니다. 안드로이드 에뮬레이터는 안드로이드 스튜디오를 설치하면 같이 설치되는 소프트웨어인데요, 단순히 앱만을 실행하는 수준이 아니라 개발자가 지정한 안드로이드 시스템을 시뮬레이션하여 화면에 표시해줍니다. 그냥 단순하게, 안드로이드 단말 기기를 PC 화면으로 옮겨놨다고 생각하시면 됩니다.


안드로이드 에뮬레이터가 소프트웨어로 구동된다하더라도, 안드로이드 앱 개발자에게는 실제 하드웨어를 사용해서 개발하는 것과 거의 유사한 개발 환경을 제공합니다. 하드웨어에서 사용자 입력을 위해 제공되는 터치 인터페이스는 마우스 입력을 통해 처리되고, 전원 및 볼륨 등의 다양한 물리적 버튼도 에뮬레이터 프로그램에 버튼 UI 형태로 제공됩니다. 또한 네트워크, 오디오, 데이터베이스, 알림과 같이, 안드로이드 서비스를 사용하는 기능도 그대로 사용할 수 있습니다.

안드로이드 에뮬레이터 실행 화면


물론, 하드웨어 기기에서 제공되는 모든 기능이 에뮬레이터에서 제공되는 것은 아닙니다. WiFi, 블루투스, 지문시스템, NFC와 같이 시뮬레이션이 불가능한 하드웨어 인터페이스는 에뮬레이터에서 제공되지 않습니다.

안드로이드 에뮬레이터에서 지원되지 않는 기능


그런데 이렇게 멋진 시뮬레이션 환경을 제공하는 안드로이드 에뮬레이터도 사실 프로그램 자체만으로는 아무것도 할 수 없습니다. 무슨 의미냐구요? 자, 질문을 몇 가지 던져보죠. "안드로이드 에뮬레이터가 안드로이드 시스템을 시뮬레이션 한다고 했는데, 어떤 버전을 시뮬레이션 하나요? 안드로이드는 버전이 많은데...". 또는, "안드로이드 에뮬레이터가 시뮬레이션 하는 안드로이드의 화면의 크기와 해상도는 어떻게 되나요? 4.5인치 FHD(1080x1920)? 7인치 QHD(1440x2560)? 아니면 10인치 UHD(2160x3840)?". 또 하나 더, "안드로이드 에뮬레이터에 할당된 안드로이드의 시스템 메모리는 어떻게 되나요? 512MB? 1GB? 4GB?"


질문에 대한 답을 얻기 위해서는 앞서 설명한 안드로이드 에뮬레이터의 역할을 다시 한번 상기할 필요가 있겠네요. "개발자가 지정한 안드로이드 시스템"을 시뮬레이션. 여기서 "개발자가 지정"하는 것들이란, 바로 앞선 질문들과 관련된 내용, 즉, "어떤 버전을 사용할 것인지", "화면의 크기는 어떻게 되는지", "시스템 메모리 크기는 얼마나 되는지"에 대한 결정이며, 안드로이드 에뮬레이터는 개발자의 이런 결정을 통해 만들어진 가상(Virtual) 시스템, 하드웨어 리얼(Real) 디바이스가 아닌 소프트웨어 가상(Virtual) 디바이스를 시뮬레이션 하는 것입니다.


그리고 개발자에 의해 결정되고 만들어진 시스템 이미지를 AVD(Android Virtual Device, 안드로이드 가상 디바이스)라고 일컫습니다.

안드로이드 에뮬레이터와 AVD


1.2 AVD(Android Virtual Device, 안드로이드 가상 디바이스)

정리하자면, 안드로이드 에뮬레이터는 개발자가 결정한 여러 스펙(버전, 화면 크기, 메모리 등)으로 생성된 안드로이드 시스템, 즉, AVD(Android Virtual Device, 안드로이드 가상 디바이스)를 실행시킵니다. 하나의 안드로이드 시스템을 실행하기 위해서는 하나의 AVD를 생성해야 한다는 말이죠.


어떤 스펙의 AVD를 만들 것인지는 보통 어떤 하드웨어 기기를 시뮬레이션할 것인지에 따라 결정합니다. 예를 들어, "넥서스 5" 기기에서의 앱 동작을 확인하려면, 넥서스 5의 스펙(4.95인치 FHD, 2GB, 6.0 마시멜로우)에 맞춰 AVD를 생성하면 되는 것이죠.

1.3 AVD Manager(Android Virtual Device Manager)

안드로이드 에뮬레이터에서 실행될 AVD를 만들기 위해서는 AVD Manager(Android Virtual Device Manager)를 사용합니다.

2. AVD(Android Virtual Device) 생성

AVD Manager를 사용하여 AVD를 생성한 다음, 생성한 AVD를 사용하여 앱 프로젝트를 실행하는 절차에 대해 알아보겠습니다.

2.1 AVD Manager(Android Virtual Device Manager) 실행

AVD Manager를 실행하기 위해, 안드로이드 스튜디오에서 Tools - AVD Manager를 선택합니다.

Tools - AVD Manager 메뉴 실행


아래 그림과 같이, AVD Manager가 화면에 표시됩니다. 새로운 AVD를 생성하기 위해 "Create Virturl Device" 버튼을 선택합니다.

AVD Manager 실행 및 Create Virtual Device 메뉴 선택


2.2 하드웨어 사양 결정. (단계 1. Hardware Profile)

AVD 설정의 첫 번째 단계인 "Select Hardware" 화면이 표시됩니다.

AVD Manager - Select Hardware


"Select Hardware"에서는 AVD의 하드웨어 사양을 결정합니다. 화면 왼쪽에는 디바이스 카테고리(TV, Phone, Ware OS, Tablet)가 나열되어 있고, 화면 중앙에는 선택된 디바이스 별로 미리 만들어진 하드웨어 프로필들이 표시되어 있습니다. 기본적으로 구글 레퍼런스 디바이스들에 대한 프로필이 나열되어 있는데, 이 중 하나를 사용(선택, 수정, 복사)하거나, 새로운 하드웨어 프로필을 생성 또는 외부 파일로부터 임포트할 수 있습니다.


여기서는 새로운 프로필을 만들고 "삼성 갤럭시 S7"의 하드웨어 사양을 적용하겠습니다. "New Hardware Profile" 버튼을 클릭하면 새로운 하드웨어 프로필 설정 화면이 나타납니다. 아래 내용과 같이 입력합니다. (아래 내용 중 RAM 항목은 PC 시스템 사양에 따라 적절한 용량을 지정하면 됩니다.)


  • Device Name : Samsung Galaxy S7
  • Device Type : Phone/Tablet
  • Screen : 5.1 inch (1440 x 2560)
  • RAM : 2048 MB
  • Has Hardware Buttons 선택.

AVD Manager - Configure Hardware Profile


"Finish" 버튼을 선택하면, 하드웨어 프로필 리스트의 첫 번째 위치에 "Samsung Galaxy S7"이 표시되는 것을 확인할 수 있습니다.

AVD Manager - Added Hardware Profile


"Next" 버튼을 클릭하여, 안드로이드 시스템 이미지 선택 단계로 넘어갑니다.

2.3 안드로이드 시스템 이미지 선택. (단계 2. System Image)

AVD 생성 두 번째 단계에서는 AVD에서 실행될 안드로이드 시스템 이미지를 선택해야 합니다. 즉, 안드로이드의 버전을 결정하는 것이죠. 이 단계에서 안드로이드 버전을 선택할 때, 무조건 최신 버전을 설치한다고 좋은 것은 아닙니다. 타겟으로 삼고 있는 버전 또는 앱이 실행 가능한 최소 버전, 아니면 시뮬레이션하고자 결정한 디바이스에서 지원되는 버전 등을 선택하는 것이 중요합니다.

AVD Manager - Select a system image


여기서는 "삼성 갤럭시 S7"에 적용되었던 버전 중 Nougat(7.0, API Level 24)를 사용할텐데요. 만약 사용하려는 시스템 이미지가 이미 설치되어 있다면, 위 화면의 "Oreo" 버전이 표시된 것 처럼, Release Name" 항목이 검은색 Bold 스타일로 표시됩니다. 하지만 설치가 되어 있지 않다면, Italic 스타일의 회색 글씨로 표시되며, "Download" 버튼을 클릭하여 새로 설치해야 합니다. "Release Name" 항목의 "Download" 버튼을 클릭하면 시스템 이미지 설치 과정이 진행됩니다. (이미지 용량이 꽤 크기때문에 네트워크 상황에 따라 몇 분 가량 소요될 수 있습니다.)

AVD Manager - Installing Requested Components


다운로드가 완료되면, 아래 그림과 같이 "Release Name" 항목이 Bold 스타일로 바뀌고 "Download" 버튼이 사라집니다. Nougat(7.0, API Level 24) 항목를 선택한 다음, "Next" 버튼을 클릭하여 AVD 생성 마지막 단계로 넘어갑니다.

AVD Manager - Select a system image


2.4 설정 확인. (단계 3. Verify Configuration)

이제 AVD 생성 과정의 마지막 단계입니다. 앞서 설정한 하드웨어 프로필 및 안드로이드 시스템 버전을 확인할 수 있고, 추가적으로 몇 가지 항목을 설정할 수 있습니다. ("Show Advanced Settings" 버튼을 클릭하면, 추가적인 상세 항목을 확인 및 설정할 수 있습니다.)

AVD Manager - Verify Configuration


"Finish" 버튼을 선택하면 AVD 생성 과정이 완료됩니다.

2.5 AVD 생성 확인.

AVD Manager 화면에서 방금 추가한 AVD가 표시되는 것을 확인합니다.

AVD Manager - AVD Manager에서 AVD 추가


2.6 안드로이드 에뮬레이터에서 AVD 실행하기.

AVD가 정상적으로 실행되는지 확인하기 위해 "Actions"에 있는 "Launch this AVD in the Emulator" 버튼을 선택합니다. 그러면 안드로이드 에뮬레이터에 안드로이드 시스템 로딩화면이 표시되고, 잠시 후 안드로이드 시스템이 실행된 것을 확인할 수 있습니다.

AVD Manager - 안드로이드 에뮬레이터에서 AVD 실행하기


3. 안드로이드 에뮬레이터에서 앱 테스트.

자, 새로운 AVD를 생성하고 안드로이드 에뮬레이터에서 실행되는 것까지 확인했으니, 이제 안드로이드 에뮬레이터에서 실행된 AVD를 사용하여 앱을 테스트하는 과정에 대해 알아보겠습니다.


음, 사실.. 간단합니다. 특별한 방법없이, 하드웨어 디바이스를 사용할 때와 동일한 방법으로 앱을 실행할 수 있으니까요. 앱 설치 타겟만 AVD로 지정하면 되는 것입니다.


안드로이드 스튜디오에서 프로젝트를 로드한 다음, "Run 'app'" 버튼을 클릭합니다. 그러면 아래 그림과 같이 앱이 설치될 대상을 선택하는 화면이 표시됩니다. AVD를 미리 안드로이드 에뮬레이터를 통해 실행해둔 상태라면 해당 AVD는 "Connected Devices" 아래에 표시됩니다. 실행 중이 아닌 AVD는 "Available Virtual Devices"에 표시됩니다.

앱 설치 및 실행 대상 AVD 선택


앱을 설치하고 실행할 AVD를 선택한 다음, "OK" 버튼을 클릭합니다.


아래 그림과 같이 안드로이드 에뮬레이터 상에 앱이 실행되는 것을 확인할 수 있습니다.

에뮬레이터에서 앱 실행


4. 참고.

.END.


ANDROID 스튜디오/개발환경 , , , , , , , , ,

  1. Blog Icon
    SuperH

    정말 감사합니다! 도움이 많이되었어요 :)

  2. 도움 되셨다니 다행입니다.

    감사합니다.

  3. Blog Icon
    안스

    Broken AVD system path. Check your ANDROID_SDK_ROOT value 계속 이런 에러메세지가 나와요 시스템 패스도 다시 지정해줘도 마찬가지인데 무엇을 확인해봐야 할까요?

  4. 늦은 답변 남기게 되어서 죄송합니다.
    혹시 아직 문제를 해결하지 못하셨다면 다시 질문글 남겨주세요.

    감사합니다.

  5. 잘 보고 갑니다~~

  6. 방문해 주셔서 감사합니다.

  7. Blog Icon
    Ratata

    덕분에 AVD 쓰는 방법 배웠네요
    감사합니다!

  8. 도움이 된 것 같아서 다행이네요.
    방문해 주셔서 감사합니다.

  9. Blog Icon
    gf0308@naver.com

    감사합니다 덕분에 도움이 많이 되었습니다 :)

  10. 방문해 주셔서 감사합니다.