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

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

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

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

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

รูปที่ 1 สถาปัตยกรรม Android Emulator

สร้างอิมเมจ 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 สำหรับ URL เพื่อใช้เป็น URL ของเว็บไซต์การอัปเดตที่กำหนดเอง

หากต้องการใช้อิมเมจ AVD ที่กำหนดเอง ให้ทำตามขั้นตอนต่อไปนี้ใน SDK Manager

  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
    

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