본문 바로가기

개발/🤖 안드로이드 스튜디오

[안드로이드 스튜디오] 앱개발에서 에뮬레이터란 ? (뜻, 시뮬레이터, 가상머신과의 비교)

 

에뮬레이터의 뜻

emulate
: 모방하다, 따라하다

 

에뮬레이터는 단어 그대로 해석하면 다른 시스템의 동작을 흉내 내는 것을 의미한다. 

컴퓨터 과학 분야에서는 다른 프로그램이나 장치를 모방하는 컴퓨터 프로그램 또는 전자기기를 가리키는 말로, 지원되지 않는 하드웨어에서 소프트웨어를 실행하기 위한 목적으로 널리 쓰인다. 

(예를 들어 콘솔게임을 컴퓨터에서 플레이하거나, 맥북에서 윈도우를 돌리는 것을 떠올리면 이해가 쉬울 것이다.)

 

나는 안드로이드 스튜디오를 사용해 안드로이드 앱을 개발할 예정인데, 아이폰을 사용하는 유저이다.

또한, 개발은 컴퓨터로 해야하는데 어떻게 앱을 개발할 수 있을까?

이 때, 스마트폰 없이 내 컴퓨터에서 가상의 스마트폰을 구현할 수 있도록 하는 것이 바로 안드로이드 에뮬레이터이다.

 

안드로이드 스튜디오에서 에뮬레이터 구동 예시

 

안드로이드 에뮬레이터의 역할과 기능

1. 물리적인 기기 없이 개발 가능 

 나처럼 안드로이드 스마트폰이 아닌 경우에도 안드로이드 에뮬레이터로 테스트 할 수 있다

2. 다양한 기기 환경 테스트

기기마다 상이한 화면 크기, 해상도, OS 버전, 메모리 환경 등에 따른 버그를 사전에 발견할 수 있다.

3. 빠른 반복 테스트

코드 수정 → 앱 재실행 → 결과 확인 과정을 빠르게 반복할 수 있어 개발 생산성이 향상된다.

 

 

 

에뮬레이터 vs 시뮬레이터 vs 가상머신

공부를 하다 보면 기존에 어떤 환경이 존재하는데 새로운 환경을 만든다는 큰 틀에서

에뮬레이터와 시뮬레이터, 가상머신이라는 개념이 헷갈리기 시작한다.

각 기술의 차이점을 간단히 정리해 보자.

 

에뮬레이터다른 하드웨어나 운영체제 환경을 소프트웨어로 정확하게 재현하는 시스템으로, 

말 그대로 실제 기기를 그대로 모방한 것을 말한다.

즉, 원래 다른 환경에서'만' 실행되던 프로그램을 현재 환경에서 동작하도록 흉내내는 것이다.

보통 안드로이드 앱 개발에서 많이 사용하며

하드웨어나 소프트웨어, 그리고 OS까지도 그대로 구현한다. 

이렇게 원본을 그대로 모방하려는 높은 정확성 때문에 상대적으로 속도가 느릴 수 있다.

 

시뮬레이터는 에뮬레이터와 비슷하지만

실제 시스템의 일부 동작이나 기능을 소프트웨어로 유사하게 흉내내는 시스템으로, 

하드웨어 명령어나 소프트웨어, OS까지 모방하는 것이 아니라 기기의 일부 동작 흐름이나 UI동작 정도만 모방한다.

그래서 에뮬레이터와는 다르게 기기의 기본 카메라, 오디오 등의 기능을 사용할 수 없다.

그렇기에 에뮬레이터보다 다소 빠르게 동작한다.

또한 보통 IOS 기반 앱 개발에 사용된다.

 

가상머신현재의 컴퓨터 위에 독립적인 가상의 컴퓨터 환경(OS)을 만드는 것이다.

실제 운영체제를 설치해 동일한 환경을 구현하고 그 위에 프로그램을 실행할 수 있다. 

주로 서버나 데스크탑 환경을 흉내낸다.

* 여기서 에뮬레이터와 비교할 만한 점은 바로 '실행 방식'이다. 

 일반적인 데스크탑의 CPU는 x86 이라는 언어(복잡 명령어 집합 아키텍처)를 사용하고,

 모바일 기기에서는 ARM이라는 언어(축소 명령어 집합 아키텍처)를 사용한다. 

 그렇기 때문에 가상머신(x86)은 내 컴퓨터(x86)와 동일한 언어를 사용하므로 속도가 매우 빠른 반면

 에뮬레이터는 내 컴퓨터(x86)에서 스마트폰용 앱(arm)을 실행하는 과정에서 해석이 필요하므로 상대적으로 느려진다.

 

정리

  에뮬레이터 가상환경(VM) 시뮬레이터
기능 기본 동작, 하드웨어, 소프트웨어,
OS 모방
현재 컴퓨터 위에 독립적인
OS환경을 구축
기본 동작만 모방
목적 이종 플랫폼 간 호환성 확보 격리된 OS환경 제공,
여러 OS 동시 실행 및 테스트,
보안 격리
UI나 기능의 동작 묘사,
빠른 피드백
호환성 다른 아키텍처 가능
(예: ARM -> x86)
동일 아키텍처 위에서 가상화
(예: x86 -> x86)
하드웨어 수준 구현 안함
정확성 가장 높음 비교적 높음 낮음
속도 느림 비교적 빠름 가장 빠름
주요 사용 환경 AOS desktop IOS