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

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

สถาปัตยกรรม Android Emulator

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

สถาปัตยกรรม Android Emulator

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

การสร้างภาพ AVD

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

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

  1. ดาวน์โหลดแหล่งที่มาของ Android:

    mkdir aosp-master; cd aosp-master
    repo init -u
    repo sync -j24
    

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

  2. สร้างอิมเมจระบบ AVD นี่เป็นกระบวนการเดียวกับ การสร้างอิมเมจระบบอุปกรณ์ Android ตัวอย่างเช่น ในการสร้าง AVD x86 32 บิต:

    mkdir aosp-master; cd aosp-master
    source ./build/envsetup.sh
    lunch sdk_phone_x86
    make -j32
    

    หากคุณต้องการสร้าง AVD x86 64 บิต ให้เรียกใช้ lunch สำหรับเป้าหมาย 64 บิต:

    lunch sdk_phone_x86_64
    
  3. เรียกใช้อิมเมจระบบ AVD ใน Android Emulator:

    emulator
    

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

Android Emulator ที่ใช้ AVD

รูปที่ 2. Android Emulator ที่รัน AVD

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

ทำตามคำแนะนำเหล่านี้เพื่อแบ่งปันภาพระบบ AVD ของคุณกับผู้อื่น พวกเขาสามารถใช้อิมเมจระบบ AVD ของคุณกับ Android Studio เพื่อพัฒนาและทดสอบแอป

  1. สร้างแพ็คเกจ sdk และ sdk_repo :

    $ make -j32 sdk sdk_repo
    

    สิ่งนี้สร้างสองไฟล์ภายใต้ aosp-master/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. แก้ไข repo-sys-img.xml ตามลำดับ:

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

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

  1. เพิ่ม Custom Update Site URL เป็น SDK Update Site

    สิ่งนี้จะเพิ่มอิมเมจระบบ AVD ที่กำหนดเองของคุณไปยังหน้าอิมเมจระบบ

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

เพิ่มการรองรับ Multi-Display

Android 10 ปรับปรุง Multi-Display (MD) เพื่อรองรับกรณีการใช้งานที่มากขึ้น เช่น โหมดอัตโนมัติและโหมดเดสก์ท็อป 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
    

คุณสามารถค้นหาฟีเจอร์อีมูเลเตอร์ล่าสุดและข้อมูลการเปิดตัวได้จากแหล่งต่อไปนี้: