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

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

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

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

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

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

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

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

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

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

    mkdir aosp-main; cd aosp-main
    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-main/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 ของไฟล์เพื่อใช้เป็น AVD URL ของภาพระบบ

  3. สำหรับ Android 12 และต่ำกว่า ให้แก้ไข repo-sys-img.xml ดังนี้

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

หากต้องการใช้รูปภาพ AVD ที่กําหนดเอง ให้ทําดังนี้ในเครื่องมือจัดการ SDK

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

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

  2. สร้าง AVD โดยดาวน์โหลดและเลือกภาพระบบ AVD ที่กําหนดเอง

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

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

คุณสามารถเพิ่มการรองรับจอแสดงผลหลายจอลงใน 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
    
  • เปิดใช้ Flag ฟีเจอร์หลายจอแสดงผลโดยเพิ่มบรรทัดนี้ลงในไฟล์ device/generic/goldfish/data/etc/advancedFeatures.ini

    MultiDisplay = on
    

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