AVD Android: คืออะไร, Android Virtual Device และวิธีตั้งค่าอีมูเลเตอร์

ผู้แต่ง: IT Sectr เผยแพร่เมื่อ: 2026-02-09 เวลาอ่าน: 10 นาที

AVD (Android Virtual Device) คือการกำหนดค่าอีมูเลเตอร์ที่จำลองอุปกรณ์ Android จริงบนคอมพิวเตอร์ของนักพัฒนา AVD แต่ละตัวประกอบด้วยเวอร์ชันระบบปฏิบัติการที่เลือก (System Image), ประเภทอุปกรณ์ (โทรศัพท์, แท็บเล็ต, Wear OS), ขนาดหน้าจอ และความจุหน่วยความจำ ตาม Google Android Developers, 2026 AVD ถูกใช้เพื่อทดสอบแอปพลิเคชันบน Android เวอร์ชันและการกำหนดค่าต่าง ๆ โดยไม่ต้องซื้ออุปกรณ์จริงหลายสิบเครื่อง QEMU คือไฮเปอร์ไวเซอร์ที่อีมูเลเตอร์ทำงานอยู่

ประเด็นสำคัญ

  • AVD — อุปกรณ์ Android เสมือนที่ทำงานบน QEMU พร้อม System Image ที่เลือก
  • System Image — อิมเมจระบบปฏิบัติการของ API Level ที่กำหนด โดยมีหรือไม่มีบริการของ Google
  • AVD Manager — เครื่องมือ Android Studio สำหรับสร้าง กำหนดค่า และจัดการอุปกรณ์เสมือน
  • สำหรับการทำงานของ AVD ที่มีประสิทธิภาพ จำเป็นต้องมีการจำลองเสมือนฮาร์ดแวร์ (HAXM, Hypervisor.Framework หรือ WHPX)
  • AVD ช่วยให้ทดสอบแอปพลิเคชันบน Android เวอร์ชันต่าง ๆ ขนาดหน้าจอ และการกำหนดค่าต่าง ๆ โดยไม่ต้องใช้อุปกรณ์จริง

AVD คืออะไร

AVD (Android Virtual Device) คือการกำหนดค่าซอฟต์แวร์ที่อธิบายอุปกรณ์ Android เสมือน ซึ่งแตกต่างจากโทรศัพท์จริง AVD ไม่ต้องการฮาร์ดแวร์ — มันทำงานบนคอมพิวเตอร์ผ่านอีมูเลเตอร์ Android ที่ใช้ QEMU นักพัฒนาสร้าง AVD ตามต้องการสำหรับการทดสอบ: สำหรับ Android เวอร์ชันต่าง ๆ ขนาดหน้าจอ ความจุหน่วยความจำ และความหนาแน่นของพิกเซล

AVD แต่ละตัวเชื่อมโยงกับ SDK Platform ที่เฉพาะเจาะจง ซึ่งหมายความว่าหากต้องการสร้าง AVD ด้วย Android 14 (API Level 34) คุณต้องติดตั้ง System Image ของเวอร์ชันนั้นก่อนผ่าน SDK Manager System Image คืออิมเมจระบบปฏิบัติการที่รวมแอปพลิเคชันระบบทั้งหมด บริการของ Google (หากเลือกอิมเมจ Google APIs) และคอมโพเนนต์รันไทม์ Google แนะนำให้ใช้อิมเมจ Google APIs กับบริการ Google Play เพื่อความเข้ากันได้สูงสุดกับอุปกรณ์จริง

AVD เป็นสิ่งจำเป็นในการพัฒนาด้วยเหตุผลหลายประการ ประการแรก มันช่วยให้ทดสอบแอปพลิเคชันบน Android เวอร์ชันต่าง ๆ โดยไม่ต้องซื้ออุปกรณ์หลายสิบเครื่อง ประการที่สอง AVD รองรับ Snapshot — การบันทึกสถานะระบบ ซึ่งช่วยเร่งการเริ่มทำงาน ประการที่สาม อีมูเลเตอร์ทำงานร่วมกับ 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 heap ไฟล์อยู่ในไดเรกทอรี $HOME/.android/avd/ชื่อAVD.avd/ และสามารถแก้ไขด้วยตนเองได้ แม้ว่าโดยปกติจะแก้ไขผ่าน AVD Manager

นอกจาก config.ini แล้ว ไดเรกทอรี AVD ยังเก็บ: userdata.img (อิมเมจข้อมูลผู้ใช้ — แอปพลิเคชัน การตั้งค่า ไฟล์), system.img (ลิงก์ไปยัง System Image ของ SDK Platform ที่ติดตั้ง), cache.img (แคช) และ sdcard.img (อิมเมจการ์ด SD) เมื่อดำเนินการ Wipe Data userdata.img จะถูกลบและสร้างอิมเมจว่างใหม่ Snapshot จะถูกบันทึกในโฟลเดอร์แยกต่างหาก snapshots/ ภายในไดเรกทอรี AVD

System Image จะถูกดาวน์โหลดแยกจาก AVD — หนึ่งอิมเมจสามารถใช้ได้โดยอุปกรณ์เสมือนหลายเครื่อง อิมเมจระบบถูกเก็บไว้ในไดเรกทอรี Android SDK: $ANDROID_SDK/system-images/android-{API}/{type}/{arch}/ ประเภทอิมเมจ: google_apis (มีบริการ Google), google_apis_playstore (มี Google Play Store) และ default (AOSP บริสุทธิ์ไม่มีบริการ Google)

ประเภทของ System Images

ประเภทอิมเมจบริการ GoogleGoogle Playวัตถุประสงค์
AOSP (default)ไม่ไม่ทดสอบพื้นฐาน, Android บริสุทธิ์
Google APIsใช่ไม่ทดสอบบริการ Google, Maps, FCM
Google Playใช่ใช่ทดสอบเต็มรูปแบบกับ Play Store และการอนุญาตสิทธิ์

การสร้าง AVD ผ่าน AVD Manager

AVD Manager คือเครื่องมือแบบกราฟิกใน Android Studio สำหรับสร้างและจัดการอุปกรณ์เสมือน สามารถเปิดได้ผ่านเมนู Tools → Device Manager หรือผ่านไอคอนบนแถบเครื่องมือ AVD Manager แสดงรายการอุปกรณ์ที่สร้าง สถานะ (กำลังทำงาน/หยุด), เวอร์ชัน Android และการดำเนินการที่พร้อมใช้งาน (เริ่ม, หยุด, ลบข้อมูล, แก้ไข)

หากต้องการสร้าง AVD ใหม่ ให้คลิกปุ่ม Create device เลือกโปรไฟล์อุปกรณ์จากรายการสำเร็จรูป — Google มีโปรไฟล์สำหรับอุปกรณ์ยอดนิยมทั้งหมด หลังจากเลือกโปรไฟล์ ให้ระบุ System Image: เวอร์ชัน Android และประเภทอิมเมจ สำหรับโปรเจกต์ใหม่ ให้เลือกเวอร์ชันเสถียรล่าสุดกับอิมเมจ Google APIs จากนั้นกำหนดชื่อ AVD การวางแนวหน้าจอ RAM และขนาด VM heap หลังจากสร้าง AVD ก็พร้อมใช้งาน

การสร้าง AVD ทีละขั้นตอนจากบรรทัดคำสั่ง

bash
# 1. รายการ System Images ที่พร้อมใช้งาน
sdkmanager --list | grep system-images

# 2. ติดตั้ง System Image สำหรับ API 35 พร้อม Google APIs
sdkmanager "system-images;android-35;google_apis;x86_64"

# 3. สร้าง AVD ชื่อ pixel8_api35
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–4096 MB), VM heap (ขนาดฮีปของเครื่องเสมือน, 256–512 MB), พื้นที่เก็บข้อมูลภายใน (2–8 GB) และ การ์ด SD (การ์ด SD เสมือน) พารามิเตอร์เหล่านี้ส่งผลต่อประสิทธิภาพของแอปพลิเคชันและพฤติกรรมเมื่อหน่วยความจำไม่เพียงพอ

การตั้งค่าเพิ่มเติมรวมถึง: กล้อง (จำลองหรือเชื่อมต่อเว็บแคมโฮสต์), เซ็นเซอร์ (มาตรความเร่ง, ไจโรสโคป), NFC, Bluetooth และแบตเตอรี่ ตัวอย่างเช่น ในการทดสอบแอปพลิเคชันที่ตรวจจับตำแหน่ง สามารถจำลองการหมุนอุปกรณ์ผ่านปุ่มควบคุมอีมูเลเตอร์หรือผ่าน ADB การจำลองเซ็นเซอร์ ช่วยให้ทดสอบสถานการณ์ที่ยากต่อการทำซ้ำบนอุปกรณ์จริง

พารามิเตอร์สำคัญของ config.ini

พารามิเตอร์คำอธิบายค่าที่แนะนำ
hw.ramSizeRAM ของอุปกรณ์2048
vm.heapSizeขนาดฮีปของเครื่องเสมือน256
hw.gpuEnabledการเร่งกราฟิกด้วยฮาร์ดแวร์yes
hw.gpuModeโหมด GPU (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 ทำงานเร็วกว่า arm64-v8a อย่างมากบนคอมพิวเตอร์ที่มีโปรเซสเซอร์ Intel และ AMD เนื่องจากไม่ต้องแปลคำสั่ง ARM แบบไดนามิก ใช้อิมเมจ x86_64 เสมอสำหรับการพัฒนาบน Windows และ macOS ที่มีโปรเซสเซอร์ Intel บนโปรเซสเซอร์ ARM Mac (Apple Silicon) ให้ใช้อิมเมจ arm64-v8a ดั้งเดิม

แฟล็กบรรทัดคำสั่งสำหรับการเร่งความเร็ว

bash
# เริ่มด้วยการจำลองเสมือนฮาร์ดแวร์และการเร่ง GPU
emulator -avd pixel8_api35 -gpu host -memory 4096 -cores 4

# ตรวจสอบการรองรับการจำลองเสมือน
emulator -accel-check

# รันโดยไม่มีส่วนติดต่อแบบกราฟิก (สำหรับ CI)
emulator -avd pixel8_api35 -no-window -no-audio -gpu off

# ใช้ Snapshot เพื่อเริ่มทำงานอย่างรวดเร็ว
emulator -avd pixel8_api35 -snapshot mysnapshot -no-snapshot-save

เคล็ดลับประสิทธิภาพอีมูเลเตอร์

เพื่อประสิทธิภาพ AVD สูงสุด: จัดสรร RAM อย่างน้อย 2–4 GB ให้อีมูเลเตอร์ เปิดใช้งาน GPU Host (ใช้การ์ดกราฟิกของคอมพิวเตอร์สำหรับการเรนเดอร์) ปิดเสียง (แฟล็ก -no-audio) หากไม่จำเป็น และใช้ Snapshot เพื่อกลับสู่สถานะสะอาดอย่างรวดเร็ว Snapshot บันทึกสถานะระบบทั้งหมด — การเริ่มจาก Snapshot ใช้เวลา 2–5 วินาทีแทนที่จะเป็น 30–60 วินาทีสำหรับการบูตเต็มรูปแบบ

แนะนำให้เก็บ AVD ไว้บนไดรฟ์ SSD — การดำเนินการ I/O ระหว่างการบูตระบบและการติดตั้ง APK จะเร็วขึ้นอย่างมาก หากต้องการรัน AVD หลายตัวพร้อมกัน ให้เพิ่มจำนวน RAM ทั้งหมดบนคอมพิวเตอร์และใช้แฟล็ก -read-only สำหรับอีมูเลเตอร์ที่ไม่เปลี่ยนรูป

การจัดการ AVD จากบรรทัดคำสั่ง

การควบคุม AVD อย่างสมบูรณ์สามารถทำได้จากบรรทัดคำสั่งโดยไม่ต้องใช้ Android Studio เครื่องมือ avdmanager และ emulator เป็นส่วนหนึ่งของ 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

# ติดตั้ง APK บน AVD ที่กำลังทำงาน
adb -s emulator-5554 install app-release.apk

ADB และ AVD: คำสั่งสำคัญ

หลังจากเริ่ม AVD แล้ว สามารถทำงานกับมันผ่าน ADB (Android Debug Bridge) เช่นเดียวกับอุปกรณ์จริง ADB ช่วยให้ติดตั้งแอปพลิเคชัน เรียกใช้ intent จำลองเหตุการณ์ (โทร, 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 วิธีนี้มีความน่าเชื่อถือมากกว่าบน Android เวอร์ชันเก่าที่ Build.FINGERPRINT อาจถูกปลอมแปลงโดยผู้ผลิตอุปกรณ์

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) เพื่อความเข้ากันได้ และรุ่นอุปกรณ์ยอดนิยม (Pixel 8 หรือ Samsung Galaxy) สำหรับทดสอบ UI บนหน้าจอเฉพาะ

ทำไม AVD ถึงทำงานช้า?

สาเหตุหลัก: การจำลองเสมือนฮาร์ดแวร์ถูกปิด (WHPX, Hypervisor.Framework, KVM), RAM ไม่เพียงพอ (น้อยกว่า 2 GB), GPU Host ปิดอยู่ เปิด -gpu host และเพิ่มหน่วยความจำเป็น 2–4 GB — ซึ่งจะทำให้อีมูเลเตอร์เร็วขึ้น 3–5 เท่า

สามารถรัน AVD โดยไม่มี Android Studio ได้หรือไม่?

ได้ อีมูเลเตอร์สามารถเริ่มได้ผ่าน emulator -avd ชื่อ_AVD จากบรรทัดคำสั่ง ซึ่งต้องมี Android SDK, Platform-Tools และ System Image ที่ติดตั้งแล้ว AVD Manager ยังมีให้ใช้เป็นยูทิลิตีคอนโซลที่เรียกว่า avdmanager

วิธีรีเซ็ต AVD เป็นค่าโรงงาน?

ใน AVD Manager เลือก Wipe Data — ซึ่งจะลบ userdata.img และทำให้อีมูเลเตอร์กลับสู่สถานะเริ่มต้น จากบรรทัดคำสั่ง: emulator -avd ชื่อ -wipe-data Snapshot จะถูกเก็บรักษาไว้หากไม่ได้ลบแยกต่างหาก

สรุป

  • AVD — อุปกรณ์ Android เสมือนที่ใช้ QEMU ช่วยให้ทดสอบแอปพลิเคชันโดยไม่ต้องใช้โทรศัพท์จริง
  • System Image — อิมเมจ OS ของ API Level ที่กำหนด มีให้ในรูปแบบ 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 และใช้ Snapshot เพื่อเร่งการเริ่มทำงาน — ซึ่งลดเวลาในการบูตจาก 60 วินาทีเหลือ 2–5 วินาที

เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร

IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ

ปรึกษาโครงการ

อ่านเพิ่มเติม