AVD Android: 정의, Android Virtual Device 및 에뮬레이터 설정 방법

저자: IT Sectr 게시일: 2026-02-09 읽는 시간: 10 분

AVD(Android Virtual Device)는 개발자 컴퓨터에서 실제 Android 기기를 시뮬레이션하는 에뮬레이터 구성입니다. 각 AVD에는 선택한 OS 버전(System Image), 기기 유형(전화, 태블릿, Wear OS), 화면 크기 및 메모리 용량이 포함됩니다. Google Android Developers, 2026에 따르면, AVD는 수십 개의 물리적 기기를 구매하지 않고도 다양한 Android 버전 및 구성에서 애플리케이션을 테스트하는 데 사용됩니다. QEMU는 에뮬레이터가 실행되는 하이퍼바이저입니다.

핵심 요점

  • AVD — 선택한 System Image와 함께 QEMU에서 실행되는 가상 Android 기기입니다.
  • System Image — Google 서비스 유무에 관계없이 특정 API Level의 운영 체제 이미지입니다.
  • AVD Manager — 가상 기기를 생성, 구성 및 관리하기 위한 Android Studio 도구입니다.
  • 생산적인 AVD 작동을 위해서는 하드웨어 가상화가 필요합니다(HAXM, Hypervisor.Framework 또는 WHPX).
  • AVD를 사용하면 물리적 기기 없이 다양한 Android 버전, 화면 크기 및 구성에서 애플리케이션을 테스트할 수 있습니다.

AVD란

AVD(Android Virtual Device)는 가상 Android 기기를 설명하는 소프트웨어 구성입니다. 물리적 전화와 달리 AVD는 하드웨어가 필요하지 않습니다. QEMU 기반 Android 에뮬레이터를 통해 컴퓨터에서 실행됩니다. 개발자는 테스트에 필요한 만큼 많은 AVD를 만듭니다: 다양한 Android 버전, 화면 크기, 메모리 용량 및 픽셀 밀도용입니다.

각 AVD는 특정 SDK Platform에 연결됩니다. 즉, Android 14(API Level 34)로 AVD를 만들려면 먼저 SDK Manager를 통해 해당 버전의 System Image를 설치해야 합니다. System Image는 모든 시스템 애플리케이션, Google 서비스(Google APIs 이미지 선택 시) 및 런타임 구성 요소를 포함하는 운영 체제 이미지입니다. Google은 실제 기기와의 최대 호환성을 위해 Google Play 서비스가 포함된 Google APIs 이미지를 사용할 것을 권장합니다.

AVD는 여러 가지 이유로 개발에 필수적입니다. 첫째, 수십 개의 기기를 구매하지 않고도 다양한 Android 버전에서 애플리케이션을 테스트할 수 있습니다. 둘째, AVD는 스냅샷을 지원하여 시스템 상태를 저장함으로써 시작 속도를 높입니다. 셋째, 에뮬레이터는 Android Studio와 통합되어 APK 설치, 디버깅 및 로깅이 물리적 기기와 동일하게 작동합니다.

가상 기기 유형

AVD는 다양한 기기 유형을 지원합니다: 전화, 태블릿, Wear OS 시계, Android TV 및 Android Automotive. 각 유형에 대해 AVD Manager는 Google에서 제공하는 기성 프로필을 제공합니다: Pixel 8, Pixel 9 Pro, Nexus 7, Samsung Galaxy Tab 등. 기기 프로필은 화면 크기, 해상도, 픽셀 밀도(dpi) 및 탐색(제스처 또는 버튼)을 정의합니다.

기기 유형프로필 예시해상도dpi
PhonePixel 81080x2400420
PhonePixel 9 Pro1280x2856490
TabletPixel Tablet2560x1600320
Wear OSPixel Watch384x384320
Android TVAndroid TV 4K1920x1080240

AVD의 구성

각 AVD는 구성 파일과 이미지의 집합입니다. 주요 구성 파일은 config.ini로, 가상 기기의 매개변수(이름, 유형, API Level, 화면 크기, RAM 및 VM 힙 크기)를 저장합니다. 파일은 $HOME/.android/avd/AVD이름.avd/ 디렉토리에 있으며 수동으로 수정할 수 있지만, 일반적으로 AVD Manager를 통해 편집됩니다.

config.ini 외에도 AVD 디렉토리에는 다음이 저장됩니다: userdata.img(사용자 데이터 이미지 — 앱, 설정, 파일), system.img(설치된 SDK Platform의 System Image 링크), cache.img(캐시) 및 sdcard.img(SD 카드 이미지). Wipe Data를 수행하면 userdata.img가 삭제되고 새로운 빈 이미지가 생성됩니다. 스냅샷은 AVD 디렉토리 내의 별도 snapshots/ 폴더에 저장됩니다.

System Image는 AVD와 별도로 다운로드됩니다. 하나의 이미지를 여러 가상 기기에서 사용할 수 있습니다. 시스템 이미지는 Android SDK 디렉토리에 저장됩니다: $ANDROID_SDK/system-images/android-{API}/{type}/{arch}/. 이미지 유형: google_apis(Google 서비스 포함), google_apis_playstore(Google Play Store 포함) 및 default(Google 서비스 없는 순수 AOSP).

System Images 유형

이미지 유형Google 서비스Google Play목적
AOSP (default)아니요아니요기본 테스트, 순수 Android
Google APIs아니요Google 서비스, Maps, FCM 테스트
Google PlayPlay Store 및 라이선싱을 포함한 전체 테스트

AVD Manager를 통한 AVD 생성

AVD Manager는 가상 기기를 생성하고 관리하기 위한 Android Studio의 그래픽 도구입니다. Tools → Device Manager 메뉴 또는 도구 모음 아이콘을 통해 열 수 있습니다. AVD Manager는 생성된 기기 목록, 상태(실행 중/중지됨), Android 버전 및 사용 가능한 작업(시작, 중지, 데이터 삭제, 편집)을 표시합니다.

새 AVD를 만들려면 Create device 버튼을 클릭합니다. 기성 목록에서 기기 프로필을 선택합니다. Google은 모든 인기 기기에 대한 프로필을 제공합니다. 프로필을 선택한 후 System Image(Android 버전 및 이미지 유형)를 지정합니다. 새 프로젝트의 경우 Google APIs 이미지가 포함된 최신 안정 버전을 선택합니다. 그런 다음 AVD 이름, 화면 방향, RAM 및 VM 힙 크기를 구성합니다. 생성 후 AVD를 시작할 준비가 됩니다.

명령줄에서 단계별 AVD 생성

bash
# 1. 사용 가능한 System Images 목록
sdkmanager --list | grep system-images

# 2. Google APIs가 포함된 API 35용 System Image 설치
sdkmanager "system-images;android-35;google_apis;x86_64"

# 3. pixel8_api35 이름으로 AVD 생성
avdmanager create avd -n pixel8_api35 \
    -k "system-images;android-35;google_apis;x86_64" \
    -d pixel_8

# 4. 생성된 AVD 시작
emulator -avd pixel8_api35 -gpu host -memory 2048

# 5. 모든 AVD 목록
avdmanager list avd

AVD 하드웨어 특성 구성

AVD Manager를 사용하면 가상 기기의 하드웨어 특성을 자세히 구성할 수 있습니다. 주요 매개변수: RAM(랜덤 액세스 메모리, 권장 값 2048–4096MB), VM 힙(가상 머신 힙 크기, 256–512MB), 내부 저장소(2–8GB) 및 SD 카드(가상 SD 카드). 이러한 매개변수는 애플리케이션 성능과 메모리 부족 상황에서의 동작에 영향을 미칩니다.

추가 설정에는 다음이 포함됩니다: 카메라(에뮬레이트 또는 호스트 웹캠 연결), 센서(가속도계, 자이로스코프), NFC, Bluetooth 및 배터리. 예를 들어, 위치 감지 애플리케이션을 테스트하려면 에뮬레이터 제어 버튼이나 ADB를 통해 기기 회전을 에뮬레이트할 수 있습니다. 센서 에뮬레이션을 통해 물리적 기기에서 재현하기 어려운 시나리오를 테스트할 수 있습니다.

주요 config.ini 매개변수

매개변수설명권장 값
hw.ramSize기기 RAM2048
vm.heapSize가상 머신 힙 크기256
hw.gpuEnabled하드웨어 그래픽 가속yes
hw.gpuModeGPU 모드 (host/mesa)host
disk.dataPartition.size데이터 파티션 크기4096M
hw.camera카메라 에뮬레이션 유형emulated

에뮬레이터 성능 최적화

AVD 속도는 하드웨어 가상화에 직접적으로 의존합니다. Windows에서는 Windows Hypervisor Platform(WHPX)이, macOS에서는 Hypervisor.Framework가, Linux에서는 KVM이 사용됩니다. 가상화가 비활성화되면 AVD는 순수 소프트웨어 에뮬레이션 모드로 작동하며, 이는 10~20배 더 느립니다. 가상화가 활성화되어 있는지 확인하려면 -accel-check 플래그와 함께 에뮬레이터를 실행하세요.

두 번째 핵심 요소는 System Image 아키텍처 선택입니다. x86_64 이미지는 Intel 및 AMD 프로세서가 장착된 컴퓨터에서 arm64-v8a보다 훨씬 빠르게 작동합니다. ARM 명령어의 동적 변환이 필요하지 않기 때문입니다. Intel 프로세서가 장착된 Windows 및 macOS에서 개발할 때는 항상 x86_64 이미지를 사용하세요. Mac ARM 프로세서(Apple Silicon)에서는 네이티브 arm64-v8a 이미지를 사용합니다.

가속을 위한 명령줄 플래그

bash
# 하드웨어 가상화 및 GPU 가속으로 시작
emulator -avd pixel8_api35 -gpu host -memory 4096 -cores 4

# 가상화 지원 확인
emulator -accel-check

# GUI 없이 실행 (CI용)
emulator -avd pixel8_api35 -no-window -no-audio -gpu off

# 빠른 시작을 위해 스냅샷 사용
emulator -avd pixel8_api35 -snapshot mysnapshot -no-snapshot-save

에뮬레이터 성능 팁

최대 AVD 성능을 위해: 에뮬레이터에 최소 2~4GB의 RAM을 할당하고, GPU Host를 활성화하고(렌더링에 컴퓨터 그래픽 카드 사용), 필요하지 않은 경우 사운드를 비활성화하고(-no-audio 플래그), 스냅샷을 사용하여 깨끗한 상태로 빠르게 돌아갑니다. 스냅샷은 완전한 시스템 상태를 저장합니다. 스냅샷에서 시작하는 데는 30~60초의 전체 부팅 대신 2~5초가 걸립니다.

또한 AVD를 SSD 드라이브에 저장하는 것이 좋습니다. 시스템 부팅 및 APK 설치 중 I/O 작업이 크게 빨라집니다. 여러 AVD를 동시에 실행하려면 컴퓨터의 총 RAM 용량을 늘리고 변경 불가능한 에뮬레이터에는 -read-only 플래그를 사용하세요.

명령줄에서 AVD 관리

Android Studio 없이 명령줄에서 AVD를 완전히 제어할 수 있습니다. avdmanageremulator 도구는 Android SDK의 일부이며 AVD 생성, 삭제, 시작 및 구성을 포함한 모든 작업을 수행합니다. 명령줄은 그래픽 인터페이스가 없는 CI/CD 파이프라인 및 테스트 자동화에 특히 유용합니다.

기본 AVD 관리 명령

bash
# 사용자 정의 매개변수로 AVD 생성
avdmanager create avd -n test_device \
    -k "system-images;android-34;google_apis;x86_64" \
    --device "pixel_8" \
    --force

# AVD 삭제
avdmanager delete avd -n test_device

# AVD 복제 (파일 복사)
cp -r ~/.android/avd/pixel8_api35.avd ~/.android/avd/pixel8_clone.avd

# AVD 데이터 초기화
emulator -avd test_device -wipe-data

# 실행 중인 AVD에 APK 설치
adb -s emulator-5554 install app-release.apk

ADB 및 AVD: 주요 명령

AVD를 시작한 후에는 물리적 기기와 마찬가지로 ADB(Android Debug Bridge)를 통해 작업할 수 있습니다. ADB를 사용하면 애플리케이션 설치, 인텐트 시작, 이벤트(통화, SMS, GPS) 에뮬레이션, 스크린샷 촬영 및 화면 비디오 녹화가 가능합니다. 이로써 AVD는 자동화된 테스트를 위한 완전한 환경이 됩니다.

bash
# 연결된 기기 목록 (AVD 포함)
adb devices

# 수신 전화 에뮬레이션
adb emu gsm call +15551234567

# GPS 좌표 에뮬레이션
adb emu geo fix -122.084 37.422

# 스크린샷 촬영
adb exec-out screencap -p > screenshot.png

# SMS 보내기
adb emu sms send +15551234567 "Hello from AVD"

애플리케이션 코드에서 에뮬레이터 확인

때로는 개발자가 코드에서 애플리케이션이 에뮬레이터에서 실행 중인지 물리적 기기에서 실행 중인지 확인해야 합니다. 이는 분석을 비활성화하거나(프로덕션 데이터 오염 방지), 확장 로깅을 활성화하거나, 에뮬레이터에서 작동하지 않는 하드웨어 종속 기능을 비활성화하는 데 필요할 수 있습니다. Google은 Build 클래스 및 시스템 속성을 통한 표준 확인 방법을 제공합니다.

Build 속성을 통한 확인 방법

kotlin
object EmulatorDetector {
    fun isEmulator(): Boolean {
        return (Build.BRAND.startsWith("generic") &&
                Build.DEVICE.startsWith("generic")) ||
                Build.FINGERPRINT.startsWith("generic") ||
                Build.FINGERPRINT.startsWith("unknown") ||
                Build.HARDWARE.contains("goldfish") ||
                Build.HARDWARE.contains("ranchu") ||
                Build.MODEL.contains("google_sdk") ||
                Build.MODEL.contains("Emulator") ||
                Build.MODEL.contains("Android SDK")
    }
}

// 사용
if (EmulatorDetector.isEmulator()) {
    Log.d("App", "Running on emulator — enable debug mode")
}

시스템 속성을 통한 확인

추가 방법은 Build.getRadioVersion()을 통한 시스템 속성 읽기와 ro.kernel.qemu 확인입니다. 에뮬레이터에서 radio version은 null을 반환하고 qemu 속성은 1로 설정됩니다. 이 방법은 Build.FINGERPRINT가 기기 제조업체에 의해 위조될 수 있는 이전 Android 버전에서 더 안정적입니다.

kotlin
fun isRunningOnEmulator(): Boolean {
    // radio version을 통한 확인 — 에뮬레이터에서 항상 null
    val radioVersion = try {
        Build.getRadioVersion()
    } catch (e: Exception) {
        null
    }
    if (radioVersion.isNullOrBlank()) return true

    // 시스템 속성을 통한 확인
    return try {
        val props = ProcessBuilder()
            .command("getprop", "ro.kernel.qemu")
            .start()
            .inputStream.bufferedReader().readText().trim()
        props == "1"
    } catch (e: Exception) {
        false
    }
}

자주 묻는 질문

AVD는 물리적 기기와 어떻게 다른가요?

AVD는 QEMU에서 실행되며 하드웨어 기능을 완전히 시뮬레이션할 수 없습니다: 실제 카메라, NFC, Bluetooth. AVD는 UI 테스트, 라이프사이클 확인 및 OS 버전 호환성에 이상적입니다. 정확한 카메라 및 센서 테스트에는 물리적 기기가 필요합니다.

몇 개의 AVD를 만들어야 하나요?

최소 2~3개의 AVD: 새 기능 확인을 위한 최신 API Level, 호환성을 위한 최소 지원(minSdk), 특정 화면에서 UI 테스트를 위한 인기 기기 모델(Pixel 8 또는 Samsung Galaxy)입니다.

AVD가 느리게 실행되는 이유는 무엇인가요?

주요 원인: 하드웨어 가상화 비활성화(WHPX, Hypervisor.Framework, KVM), RAM 부족(2GB 미만), GPU Host 꺼짐. -gpu host를 활성화하고 메모리를 2~4GB로 늘리면 에뮬레이터가 3~5배 빨라집니다.

Android Studio 없이 AVD를 실행할 수 있나요?

네. 명령줄에서 emulator -avd AVD_이름을 통해 에뮬레이터를 시작할 수 있습니다. 이를 위해서는 Android SDK, Platform-Tools 및 설치된 System Image가 필요합니다. AVD Manager는 avdmanager라는 콘솔 유틸리티로도 사용할 수 있습니다.

AVD를 공장 설정으로 초기화하는 방법은?

AVD Manager에서 Wipe Data를 선택하면 userdata.img가 삭제되고 에뮬레이터가 초기 상태로 돌아갑니다. 명령줄에서: emulator -avd 이름 -wipe-data. 스냅샷은 별도로 삭제하지 않는 한 보존됩니다.

요약

  • AVD — QEMU 기반 가상 Android 기기로, 물리적 전화 없이 애플리케이션 테스트가 가능합니다.
  • System Image — 특정 API Level의 OS 이미지로, AOSP, Google APIs 및 Google Play 변형으로 제공됩니다.
  • AVD Manager — Android Studio 또는 명령줄에서 가상 기기를 생성, 구성 및 관리하는 도구입니다.
  • AVD 성능을 위해서는 하드웨어 가상화(WHPX, Hypervisor.Framework, KVM)와 x86_64 이미지 선택이 필수적입니다.
  • ADB를 통해 모든 에뮬레이션 작업(통화, SMS, GPS, APK 설치, 스크린샷)을 물리적 기기와 마찬가지로 사용할 수 있습니다.
  • 코드에서 에뮬레이터를 감지하려면 Build.FINGERPRINT, Build.HARDWARE 및 ro.kernel.qemu 확인을 사용하세요.
  • AVD를 SSD에 저장하고 스냅샷을 사용하여 시작 속도를 높이면 부팅 시간이 60초에서 2~5초로 단축됩니다.

턴키 방식의 모바일 애플리케이션을 개발해 드립니다

IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.

프로젝트 논의

더 읽어보기