ใช้อุปกรณ์เสมือนของ Android Emulator

คุณสามารถใช้โปรแกรมจำลอง Android เพื่อสร้างการจำลองอุปกรณ์ Android ที่เรียกใช้อิมเมจระบบ Android ที่กำหนดเองของคุณเองได้ นอกจากนี้ คุณยังเพิ่มการรองรับหลายจอแสดงผลลงในการจำลอง Android Emulator ได้ด้วย

สถาปัตยกรรมของโปรแกรมจำลอง Android

Android Emulator เรียกใช้ระบบปฏิบัติการ Android ในเครื่องเสมือนที่เรียกว่าอุปกรณ์เสมือน Android (AVD) AVD แต่ละรายการ มีชุดซอฟต์แวร์ Android แบบเต็ม และทำงานราวกับ อยู่ในอุปกรณ์จริง รูปที่ 1 แสดงสถาปัตยกรรมระดับสูงของโปรแกรมจำลอง Android ดูข้อมูลเพิ่มเติมเกี่ยวกับโปรแกรมจำลองได้ที่เรียกใช้แอปในโปรแกรมจำลอง Android

สถาปัตยกรรมของโปรแกรมจำลอง Android

รูปที่ 1 สถาปัตยกรรมของโปรแกรมจำลอง Android

สร้างอิมเมจ AVD

AVD แต่ละรายการมีอิมเมจระบบ Android ซึ่งทำงานใน AVD นั้น AVD Manager มีอิมเมจระบบบางรายการ นอกจากนี้ คุณยังสร้างอิมเมจระบบ AVD ที่กำหนดเองจากซอร์สโค้ดและสร้างการจำลองอุปกรณ์เพื่อเรียกใช้ได้ด้วย

วิธีสร้างและเรียกใช้อิมเมจระบบ AVD

  1. ดาวน์โหลดซอร์สโค้ด Android

    mkdir aosp-android-latest-release; cd aosp-android-latest-release
    repo init -u
    repo sync -j24

หากต้องการสร้าง Android เวอร์ชันอื่นๆ คุณสามารถดูชื่อสาขาได้ในที่เก็บ Android สาธารณะ ซึ่งจะแมปกับชื่อเวอร์ชัน แท็ก และหมายเลขบิลด์ของ Android

  1. สร้างอิมเมจระบบ AVD ซึ่งเป็นกระบวนการเดียวกับการสร้างอิมเมจระบบของอุปกรณ์ Android เช่น หากต้องการสร้าง AVD แบบ 64 บิต x86 ให้ทำดังนี้

    source ./build/envsetup.sh
    lunch sdk_phone_x86_64
    make -j32
  2. เรียกใช้อิมเมจระบบ AVD ในโปรแกรมจำลอง Android โดยทำดังนี้

    emulator

ดูรายละเอียดเพิ่มเติมเกี่ยวกับการเรียกใช้โปรแกรมจำลองได้ที่ ตัวเลือกการเริ่มต้นบรรทัดคำสั่ง รูปที่ 2 แสดงตัวอย่าง โปรแกรมจำลอง Android ที่เรียกใช้ AVD

โปรแกรมจำลอง Android ที่เรียกใช้ AVD

รูปที่ 2 โปรแกรมจำลอง Android ที่เรียกใช้ AVD

แชร์อิมเมจระบบ AVD เพื่อให้ผู้อื่นใช้กับ Android Studio ได้

ทำตามวิธีการต่อไปนี้เพื่อแชร์อิมเมจระบบ AVD กับผู้อื่น โดยสามารถ ใช้อิมเมจระบบ AVD กับ Android Studio เพื่อพัฒนาและทดสอบแอป

  1. สร้างแพ็กเกจ sdk และ sdk_repo เพิ่มเติม

    สำหรับ Android 13 ขึ้นไป ให้ใช้คำสั่ง emu_img_zip

    $ make emu_img_zip
    

    ซึ่งจะสร้างไฟล์ sdk-repo-linux-system-images-eng.[username]].zip

    สำหรับ Android 12 และต่ำกว่า ให้ใช้คำสั่ง sdk_repo

    $ make -j32 sdk sdk_repo
    

    คำสั่ง make sdk sdk_repo จะสร้างไฟล์ 2 ไฟล์ภายใต้ aosp-android-latest-release/out/host/linux-x86/sdk/sdk_phone_x86

    • sdk-repo-linux-system-images-eng.[username].zip
    • repo-sys-img.xml
  2. โฮสต์ไฟล์ sdk-repo-linux-system-images-eng.[username].zip ในที่ที่ผู้ใช้เข้าถึงได้ และรับ URL ของไฟล์เพื่อใช้เป็น URL ของอิมเมจระบบ AVD

  3. สำหรับ Android 12 และต่ำกว่า ให้แก้ไข repo-sys-img.xml ตามความเหมาะสม

    • อัปเดต <sdk:url> เป็น URL รูปภาพระบบ AVD
    • ดูข้อมูลเกี่ยวกับการอัปเดตอื่นๆ ในไฟล์ได้ที่ sdk-sys-img-03.xsd
    • โฮสต์ repo-sys-img.xml ในตำแหน่งที่ผู้ใช้เข้าถึงได้ และรับ URL เพื่อใช้เป็น URL ของเว็บไซต์อัปเดตที่กำหนดเอง

หากต้องการใช้รูปภาพ AVD ที่กำหนดเอง ให้ทำดังนี้ใน SDK Manager

  1. เพิ่ม URL เว็บไซต์อัปเดตที่กำหนดเองเป็น เว็บไซต์อัปเดต SDK

    ซึ่งจะเพิ่มอิมเมจระบบ AVD ที่กำหนดเองลงในหน้าอิมเมจระบบ

  2. สร้าง AVD โดยดาวน์โหลดและเลือกอิมเมจระบบ AVD ที่กำหนดเอง

เพิ่มการรองรับหลายจอภาพ

Android 10 ปรับปรุงการแสดงผลแบบหลายหน้าจอ เพื่อรองรับกรณีการใช้งานต่างๆ ได้ดียิ่งขึ้น เช่น โหมดอัตโนมัติและโหมดเดสก์ท็อป Android Emulator ยังรองรับการจำลองแบบหลายจอภาพด้วย คุณจึงสร้างสภาพแวดล้อมแบบหลายจอแสดงผลที่เฉพาะเจาะจงได้โดยไม่ต้องตั้งค่าฮาร์ดแวร์จริง

คุณเพิ่มการรองรับหลายจอแสดงผลลงใน AVD ได้โดยทำการเปลี่ยนแปลงต่อไปนี้ หรือ โดยการเลือกจาก CL เหล่านี้

  • เพิ่มผู้ให้บริการหลายจอแสดงผลลงในการสร้างโดยเพิ่มบรรทัดต่อไปนี้ลงในไฟล์ build/target/product/sdk_phone_x86.mk

    PRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST := \
        system/lib/libemulator_multidisplay_jni.so \
        system/lib64/libemulator_multidisplay_jni.so \
        system/priv-app/MultiDisplayProvider/MultiDisplayProvider.apk \
    PRODUCT_PACKAGES += MultiDisplayProvider
    
  • เปิดใช้ฟีเจอร์แฟล็กหลายจอแสดงผลโดยเพิ่มบรรทัดนี้ลงในไฟล์ device/generic/goldfish/data/etc/advancedFeatures.ini

    MultiDisplay = on
    

คุณดูฟีเจอร์ล่าสุดของโปรแกรมจำลองและข้อมูลการเผยแพร่ได้จากแหล่งข้อมูลต่อไปนี้