Android Debug Bridge (adb)

Android Debug Bridge (adb) เป็นเครื่องมือบรรทัดคำสั่งอเนกประสงค์ที่ช่วยให้คุณสื่อสารกับ อุปกรณ์ คำสั่ง adb ช่วยอำนวยความสะดวกในการทำงานต่างๆ ของอุปกรณ์ เช่น การติดตั้งและ แอปแก้ไขข้อบกพร่อง adb ให้สิทธิ์เข้าถึง Unix Shell ที่คุณเรียกใช้ได้หลากหลายประเภท คำสั่งต่างๆ ในอุปกรณ์ โปรแกรมนี้เป็นโปรแกรมแบบไคลเอ็นต์เซิร์ฟเวอร์ที่มีส่วนประกอบ 3 ส่วน ได้แก่

  • ไคลเอ็นต์ ซึ่งจะส่งคำสั่ง ไคลเอ็นต์จะทำงานบนเครื่องที่กำลังพัฒนา คุณสามารถ เรียกใช้ไคลเอ็นต์จากเทอร์มินัลบรรทัดคำสั่งด้วยการออกคำสั่ง adb
  • daemon (adbd) ซึ่งเรียกใช้คำสั่งในอุปกรณ์ Daemon ทำงานเป็นพื้นหลัง ในแต่ละอุปกรณ์
  • เซิร์ฟเวอร์ ซึ่งจัดการการสื่อสารระหว่างไคลเอ็นต์และ Daemon เซิร์ฟเวอร์ ทำงานเป็นกระบวนการเบื้องหลังในเครื่องการพัฒนาของคุณ

adb รวมอยู่ในแพ็กเกจเครื่องมือแพลตฟอร์ม Android SDK ดาวน์โหลดสิ่งนี้ แพ็กเกจที่มี SDK Manager ซึ่งจะติดตั้ง เวลา android_sdk/platform-tools/ ถ้าคุณต้องการใช้ Android SDK แบบสแตนด์อโลน แพ็กเกจเครื่องมือแพลตฟอร์ม ดาวน์โหลดได้ที่นี่

สำหรับข้อมูลเกี่ยวกับการเชื่อมต่ออุปกรณ์สำหรับใช้กับ adb รวมถึงวิธีใช้การเชื่อมต่อ Assistant เพื่อแก้ปัญหาทั่วไป โปรดดู เรียกใช้แอปในอุปกรณ์ฮาร์ดแวร์

วิธีการทำงานของ adb

เมื่อคุณเริ่มต้นไคลเอ็นต์ adb ไคลเอ็นต์จะตรวจสอบก่อนว่ามี กระบวนการของเซิร์ฟเวอร์ adb ทำงานอยู่แล้ว หากไม่มี จะเป็นการเริ่มกระบวนการของเซิร์ฟเวอร์ เมื่อเซิร์ฟเวอร์เริ่มทำงาน เซิร์ฟเวอร์จะเชื่อมโยงกับพอร์ต TCP 5037 ในเครื่องและรอคำสั่งที่ส่งจาก adb รายการ

หมายเหตุ: ไคลเอ็นต์ adb ทั้งหมดใช้พอร์ต 5037 ในการสื่อสาร กับเซิร์ฟเวอร์ adb

จากนั้นเซิร์ฟเวอร์จะตั้งค่าการเชื่อมต่อกับอุปกรณ์ทั้งหมดที่กำลังทำงานอยู่ ช่วยค้นหาโปรแกรมจำลองโดยการสแกนพอร์ตเลขคี่ในช่วง 5555 ถึง 5585 ซึ่งเป็นช่วงที่โปรแกรมจำลอง 16 ตัวแรกใช้ ตำแหน่งที่เซิร์ฟเวอร์พบ adb Daemon (adbd) ก็จะตั้งค่าการเชื่อมต่อกับพอร์ตนั้น

โปรแกรมจำลองแต่ละตัวจะใช้คู่พอร์ตตามลำดับ ซึ่งก็คือพอร์ตที่มีเลขคู่สำหรับ การเชื่อมต่อคอนโซลและพอร์ตหมายเลขคี่สำหรับการเชื่อมต่อ adb เช่น

โปรแกรมจำลอง 1, คอนโซล: 5554
โปรแกรมจำลอง 1, adb: 5555
โปรแกรมจำลอง 2, คอนโซล: 5556
โปรแกรมจำลอง 2, adb: 5557
เป็นต้น

ตามที่แสดง โปรแกรมจำลองที่เชื่อมต่อกับ adb บนพอร์ต 5555 เหมือนกับโปรแกรมจำลอง ที่ใช้คอนโซลที่รอการเชื่อมต่อผ่านพอร์ต 5554

เมื่อตั้งค่าเซิร์ฟเวอร์ให้เชื่อมต่อกับอุปกรณ์ทั้งหมดแล้ว คุณจะใช้คำสั่ง adb เพื่อ เข้าถึงอุปกรณ์เหล่านั้น เนื่องจากเซิร์ฟเวอร์จัดการการเชื่อมต่อกับอุปกรณ์และแฮนเดิล คำสั่งจากไคลเอ็นต์ adb หลายตัว คุณสามารถควบคุมอุปกรณ์ใดก็ได้จากไคลเอ็นต์หรือ จากสคริปต์

เปิดใช้การแก้ไขข้อบกพร่อง adb บนอุปกรณ์ของคุณ

หากต้องการใช้ adb กับอุปกรณ์ที่เชื่อมต่อผ่าน USB คุณต้องเปิดใช้งาน การแก้ไขข้อบกพร่อง USB ในการตั้งค่าระบบอุปกรณ์ในส่วน ตัวเลือกสำหรับนักพัฒนาแอป ใน Android 4.2 (API ระดับ 17) ขึ้นไป หน้าจอตัวเลือกสำหรับนักพัฒนาซอฟต์แวร์ ซ่อนอยู่โดยค่าเริ่มต้น หากต้องการให้แสดง ให้เปิดใช้งาน ตัวเลือกสำหรับนักพัฒนาแอป

ตอนนี้คุณเชื่อมต่ออุปกรณ์ด้วย USB ได้แล้ว คุณสามารถยืนยันว่าอุปกรณ์ เชื่อมต่อโดยเรียกใช้ adb devices จาก ไดเรกทอรี android_sdk/platform-tools/ หากเชื่อมต่อแล้ว คุณจะเห็นชื่ออุปกรณ์แสดงเป็น "อุปกรณ์"

หมายเหตุ: เมื่อคุณเชื่อมต่ออุปกรณ์ที่ใช้ Android 4.2.2 (API) ระดับ 17) หรือสูงกว่า ระบบจะแสดงกล่องโต้ตอบที่ถามว่าจะยอมรับคีย์ RSA ที่อนุญาตหรือไม่ การแก้ไขข้อบกพร่องผ่านคอมพิวเตอร์เครื่องนี้ กลไกการรักษาความปลอดภัยนี้จะปกป้องอุปกรณ์ของผู้ใช้เนื่องจาก การแก้ไขข้อบกพร่อง USB และคำสั่ง adb อื่นๆ นั้นจะไม่สามารถทำงานได้ จนกว่าคุณจะปลดล็อก อุปกรณ์และรับทราบกล่องโต้ตอบ

สําหรับข้อมูลเพิ่มเติมเกี่ยวกับการเชื่อมต่ออุปกรณ์ผ่าน USB โปรดอ่าน เรียกใช้แอปในอุปกรณ์ฮาร์ดแวร์

เชื่อมต่ออุปกรณ์ผ่าน Wi-Fi

หมายเหตุ: วิธีการด้านล่างไม่มีผลกับอุปกรณ์ Wear ที่ใช้ Android 11 (API ระดับ 30) ดูคู่มือสำหรับ การแก้ไขข้อบกพร่องของแอป Wear OS สำหรับ ข้อมูลเพิ่มเติม

Android 11 (API ระดับ 30) ขึ้นไปรองรับการติดตั้งใช้งานและการแก้ไขข้อบกพร่องของแอปแบบไร้สายจาก เวิร์กสเตชันของคุณโดยใช้ Android Debug Bridge (adb) เช่น คุณสามารถทำให้โปรแกรมแก้ไขข้อบกพร่องใช้งานได้ กับอุปกรณ์ระยะไกลหลายเครื่อง โดยไม่จำเป็นต้องเชื่อมต่ออุปกรณ์ผ่าน USB ทำให้ไม่จำเป็นต้องจัดการกับปัญหาการเชื่อมต่อ USB ทั่วไป เช่น ไดรเวอร์ ของคุณ

ก่อนที่จะเริ่มใช้การแก้ไขข้อบกพร่องผ่าน Wi-Fi ให้ทำตามขั้นตอนต่อไปนี้

  • ตรวจสอบว่าเวิร์กสเตชันและอุปกรณ์เชื่อมต่อกับเครือข่ายไร้สายเดียวกัน

  • ตรวจสอบว่าอุปกรณ์ใช้ Android 11 (API ระดับ 30) ขึ้นไปสำหรับโทรศัพท์หรือ Android 13 (API ระดับ 33) ขึ้นไปสำหรับ TV และ WearOS สำหรับข้อมูลเพิ่มเติม โปรดดู ตรวจสอบและ อัปเดต เวอร์ชัน Android

  • หากใช้ IDE ให้ตรวจสอบว่าคุณได้ติดตั้ง Android Studio เวอร์ชันล่าสุดแล้ว คุณดาวน์โหลดได้ ที่นี่

  • ในเวิร์กสเตชัน ให้อัปเดตเป็นเวอร์ชันล่าสุด เครื่องมือแพลตฟอร์ม SDK

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

  1. เปิดใช้ตัวเลือกสำหรับนักพัฒนาแอป บนอุปกรณ์ของคุณ

  2. เปิด Android Studio แล้วเลือกจับคู่อุปกรณ์โดยใช้ Wi-Fi จากการเรียกใช้ เมนูการกำหนดค่า

    เรียกใช้เมนูแบบเลื่อนลงของการกำหนดค่า
    รูปที่ 1 เรียกใช้เมนูการกำหนดค่า

    หน้าต่างจับคู่อุปกรณ์ผ่าน Wi-Fi จะปรากฏขึ้นดังที่แสดงในรูปที่ 2

    ภาพหน้าจอของอุปกรณ์ที่จับคู่ผ่านหน้าต่างป๊อปอัป Wi-Fi
    รูปที่ 2 หน้าต่างป๊อปอัปสำหรับจับคู่อุปกรณ์โดยใช้คิวอาร์โค้ดหรือการจับคู่ โค้ด
  3. ในอุปกรณ์ ให้แตะการแก้ไขข้อบกพร่องผ่าน Wi-Fi แล้วจับคู่อุปกรณ์โดยทำดังนี้

    ภาพหน้าจอของ
            โทรศัพท์ Pixel ที่แสดงการตั้งค่าระบบการแก้ไขข้อบกพร่องผ่าน Wi-Fi
    รูปที่ 3 ภาพหน้าจอของการตั้งค่าการแก้ไขข้อบกพร่องผ่าน Wi-Fi โทรศัพท์ Google Pixel
    1. หากต้องการจับคู่อุปกรณ์กับคิวอาร์โค้ด ให้เลือกจับคู่อุปกรณ์กับคิวอาร์โค้ด แล้วสแกน คิวอาร์โค้ดที่ได้รับจากป๊อปอัปจับคู่อุปกรณ์ผ่าน Wi-Fi ที่แสดงในรูปที่ 2

    2. หากต้องการจับคู่อุปกรณ์ด้วยรหัสการจับคู่ ให้เลือกจับคู่อุปกรณ์ด้วยรหัสการจับคู่จาก ป๊อปอัปจับคู่อุปกรณ์ผ่าน Wi-Fi บนอุปกรณ์ของคุณ ให้เลือก จับคู่โดยใช้ รหัสการจับคู่ และจดบันทึกรหัส 6 หลักที่ให้ไว้ เมื่ออุปกรณ์ปรากฏใน จับคู่อุปกรณ์ผ่าน Wi-Fi คุณสามารถเลือกจับคู่และป้อนตัวเลข 6 หลัก ที่แสดงในอุปกรณ์ของคุณ

      ภาพหน้าจอของตัวอย่างการป้อนรหัส PIN
      รูปที่ 4 ตัวอย่างการป้อนรหัส 6 หลัก
  4. หลังจากจับคู่อุปกรณ์แล้ว คุณอาจลองทำให้แอปใช้งานได้ในอุปกรณ์

    หากต้องการจับคู่อุปกรณ์อื่นหรือไม่จำอุปกรณ์ปัจจุบันบนเวิร์กสเตชัน ให้ไปที่ การแก้ไขข้อบกพร่องผ่าน Wi-Fi ในอุปกรณ์ แตะชื่อเวิร์กสเตชันของคุณในส่วนจับคู่แล้ว อุปกรณ์ต่างๆ แล้วเลือกไม่จำ

  5. หากคุณต้องการเปิดและปิดการแก้ไขข้อบกพร่องผ่าน Wi-Fi อย่างรวดเร็ว คุณสามารถใช้ การ์ดการตั้งค่าด่วนสำหรับนักพัฒนาแอป การแก้ไขข้อบกพร่องผ่าน Wi-Fi ซึ่งอยู่ในตัวเลือกสำหรับนักพัฒนาซอฟต์แวร์ > นักพัฒนาการตั้งค่าด่วน ไทล์

    ภาพหน้าจอของ
            การ์ดการตั้งค่าด่วนสำหรับนักพัฒนาซอฟต์แวร์จากโทรศัพท์ Google Pixel
    รูปที่ 5 การตั้งค่าการ์ดการตั้งค่าด่วนสำหรับนักพัฒนาแอป ช่วยให้คุณเปิดและปิดการแก้ไขข้อบกพร่องผ่าน Wi-Fi ได้อย่างรวดเร็ว

การเชื่อมต่อ Wi-Fi โดยใช้บรรทัดคำสั่ง

หรือหากต้องการเชื่อมต่อกับอุปกรณ์โดยใช้บรรทัดคำสั่งโดยไม่ใช้ Android Studio ให้ทำตาม ขั้นตอนเหล่านี้:

  1. เปิดใช้ตัวเลือกสำหรับนักพัฒนาแอปในอุปกรณ์ของคุณตามที่อธิบายไว้ก่อนหน้านี้

  2. เปิดใช้การแก้ไขข้อบกพร่องผ่าน Wi-Fi ในอุปกรณ์ตามที่อธิบายไว้ก่อนหน้านี้

  3. บนเวิร์กสเตชัน ให้เปิดหน้าต่างเทอร์มินัลและไปที่ android_sdk/platform-tools

  4. ค้นหาที่อยู่ IP, หมายเลขพอร์ต และรหัสการจับคู่โดยเลือกจับคู่อุปกรณ์กับ รหัสการจับคู่ จดที่อยู่ IP, หมายเลขพอร์ต และรหัสการจับคู่ที่แสดงอยู่ใน อุปกรณ์

  5. เรียกใช้ adb pair ipaddr:port บนเครื่องชำระเงินของเวิร์กสเตชัน ใช้ที่อยู่ IP และหมายเลขพอร์ตจากด้านบน

  6. เมื่อได้รับข้อความแจ้ง ให้ป้อนรหัสการจับคู่ดังที่แสดงด้านล่าง

    ภาพหน้าจอของ
            ในบรรทัดคำสั่ง
    รูปที่ 6 จะมีข้อความระบุว่าอุปกรณ์สำเร็จแล้ว จับคู่แล้ว

แก้ปัญหาการเชื่อมต่อแบบไร้สาย

หากพบปัญหาในการเชื่อมต่ออุปกรณ์แบบไร้สาย ให้ลองทำตามขั้นตอนต่อไปนี้ ขั้นตอนการแก้ปัญหาได้

ตรวจสอบว่าเวิร์กสเตชันและอุปกรณ์ของคุณมีคุณสมบัติตรงตามข้อกำหนดเบื้องต้นหรือไม่

ตรวจสอบว่าเวิร์กสเตชันและอุปกรณ์มีคุณสมบัติตรงตามข้อกำหนดเบื้องต้นที่ระบุไว้ที่ จุดเริ่มต้นของส่วนนี้

ตรวจสอบปัญหาที่ทราบอื่นๆ

ต่อไปนี้คือรายการปัญหาที่ทราบแล้วในปัจจุบันเกี่ยวกับการแก้ไขข้อบกพร่องผ่าน Wi-Fi (โดยใช้ adb หรือ Android Studio) และวิธีแก้ไข

  • Wi-Fi ไม่เชื่อมต่อ: เครือข่าย Wi-Fi ที่ปลอดภัย เช่น เครือข่าย Wi-Fi ขององค์กร อาจบล็อกการเชื่อมต่อแบบ p2p และไม่ให้คุณเชื่อมต่อผ่าน Wi-Fi ลองเชื่อมต่อด้วยสาย หรือ เครือข่าย Wi-Fi อื่น (ที่ไม่ใช่บริษัท) การเชื่อมต่อแบบไร้สายโดยใช้ adb connect ip:port ผ่าน tcp/ip (หลังจากการเชื่อมต่อ USB ครั้งแรก) เป็นอีกตัวเลือกหนึ่ง ในกรณีที่เลือกใช้เครือข่ายที่ไม่ใช่องค์กร

  • บางครั้งผ่าน Wi-Fi adb จะปิดโดยอัตโนมัติ: ปัญหานี้อาจเกิดขึ้นได้หากอุปกรณ์ สลับเครือข่าย Wi-Fi หรือยกเลิกการเชื่อมต่อกับเครือข่าย เชื่อมต่ออีกครั้งเพื่อแก้ไขปัญหา กับเครือข่าย

  • อุปกรณ์ไม่เชื่อมต่อหลังจากจับคู่สำเร็จ: adb จะใช้ mDNS เพื่อทำงาน ค้นพบและเชื่อมต่อกับอุปกรณ์ที่จับคู่แล้วโดยอัตโนมัติ หากเครือข่ายหรืออุปกรณ์ของคุณ ไม่สนับสนุน mDNS หรือปิดการใช้งาน mDNS แล้ว คุณต้องกำหนดค่าด้วยตนเอง เชื่อมต่อกับอุปกรณ์โดยใช้ adb connect ip:port

เชื่อมต่อแบบไร้สายกับอุปกรณ์หลังจากเชื่อมต่อ USB ครั้งแรก (ตัวเลือกมีเฉพาะใน Android 10 และต่ำกว่าเท่านั้น)

หมายเหตุ: เวิร์กโฟลว์นี้ยังใช้ได้กับ Android 11 ด้วย (และ สูงกว่า) มีคำเตือนว่าจะต้องเชื่อมต่อ *เบื้องต้น* ผ่าน USB จริง

หมายเหตุ: คำแนะนำต่อไปนี้ใช้ไม่ได้กับอุปกรณ์ Wear ที่ใช้ Android 10 (API ระดับ 29) หรือต่ำกว่า ดูคำแนะนำเกี่ยวกับ การแก้ไขข้อบกพร่องของแอป Wear OS สำหรับ ข้อมูลเพิ่มเติม

โดยปกติแล้ว adb จะสื่อสารกับอุปกรณ์ผ่าน USB แต่คุณยังสามารถใช้ adb ผ่าน Wi-Fi วิธีเชื่อมต่ออุปกรณ์ที่ใช้ Android 10 (API ระดับ 29) หรือต่ำกว่า ทำตามขั้นตอนเบื้องต้นเหล่านี้ผ่าน USB

  1. เชื่อมต่ออุปกรณ์ Android ของคุณและคอมพิวเตอร์โฮสต์ adb กับเครือข่าย Wi-Fi ทั่วไป
  2. หมายเหตุ: โปรดระวังว่าจุดเข้าใช้งานทั้งหมดไม่ได้ เหมาะสม คุณอาจต้องใช้จุดเข้าใช้งาน ซึ่งมีไฟร์วอลล์ที่กำหนดค่าอย่างเหมาะสมให้รองรับ adb

  3. เชื่อมต่ออุปกรณ์กับคอมพิวเตอร์โฮสต์ด้วยสาย USB
  4. ตั้งค่าอุปกรณ์เป้าหมายให้ฟังการเชื่อมต่อ TCP/IP บนพอร์ต 5555:
    adb tcpip 5555
    
  5. ถอดสาย USB ออกจากอุปกรณ์เป้าหมาย
  6. ค้นหาที่อยู่ IP ของอุปกรณ์ Android เช่น ในอุปกรณ์ Nexus คุณจะเห็น ที่อยู่ IP ที่การตั้งค่า > เกี่ยวกับแท็บเล็ต (หรือเกี่ยวกับโทรศัพท์) > สถานะ > ที่อยู่ IP
  7. เชื่อมต่ออุปกรณ์โดยใช้ที่อยู่ IP:
    adb connect device_ip_address:5555
    
  8. ตรวจสอบว่าคอมพิวเตอร์โฮสต์เชื่อมต่อกับอุปกรณ์เป้าหมายแล้ว โดยทำดังนี้
    $ adb devices
    List of devices attached
    device_ip_address:5555 device
    

อุปกรณ์ของคุณเชื่อมต่อกับ adb แล้ว

หากการเชื่อมต่อ adb กับอุปกรณ์หายไป ให้ทำดังนี้

  • ตรวจสอบว่าโฮสต์ยังคงเชื่อมต่อเครือข่าย Wi-Fi เดียวกันกับอุปกรณ์ Android
  • เชื่อมต่อใหม่โดยทําตามขั้นตอน adb connect อีกครั้ง
  • หากไม่ได้ผล ให้รีเซ็ตโฮสต์ adb วันที่
    adb kill-server
    

    จากนั้นให้เริ่มใหม่ตั้งแต่ต้น

การค้นหาอุปกรณ์

ก่อนออกคำสั่ง adb คุณควรทราบว่าอุปกรณ์อินสแตนซ์ใดเชื่อมต่ออยู่ ไปยังเซิร์ฟเวอร์ adb สร้างรายการอุปกรณ์ที่แนบโดยใช้ คำสั่ง devices:

  adb devices -l
  

adb จะพิมพ์ข้อมูลสถานะนี้สำหรับอุปกรณ์แต่ละเครื่องในการตอบกลับ

  • หมายเลขซีเรียล: adb สร้างสตริงเพื่อระบุอุปกรณ์โดยไม่ซ้ำกัน ตามหมายเลขพอร์ต ต่อไปนี้คือตัวอย่างหมายเลขซีเรียล: emulator-5554
  • สถานะ: สถานะการเชื่อมต่อของอุปกรณ์อาจเป็นอย่างใดอย่างหนึ่งต่อไปนี้
    • offline: อุปกรณ์ไม่ได้เชื่อมต่อกับ adb หรือไม่ได้ต่อ ตอบกลับ
    • device: อุปกรณ์เชื่อมต่อกับเซิร์ฟเวอร์ของ adb โปรดทราบว่า สถานะนี้ไม่ได้บอกเป็นนัยว่าระบบ Android บูตขึ้นอย่างสมบูรณ์และทำงานได้เพราะ อุปกรณ์เชื่อมต่อกับ adb ขณะที่ระบบยังบูตอยู่ หลังจากเปิดเครื่องแล้ว นี่จะเป็นการดำเนินการตามปกติ สถานะของอุปกรณ์
    • no device: ไม่มีอุปกรณ์เชื่อมต่ออยู่
  • คำอธิบาย: หากคุณรวมตัวเลือก -l แอตทริบิวต์ devices ที่บอกว่าอุปกรณ์คืออะไร ข้อมูลนี้จะเป็นประโยชน์เมื่อคุณมีอุปกรณ์หลายเครื่อง เชื่อมต่ออยู่ เพื่อให้แยกความแตกต่างได้

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

$ adb devices
List of devices attached
emulator-5556 device product:sdk_google_phone_x86_64 model:Android_SDK_built_for_x86_64 device:generic_x86_64
emulator-5554 device product:sdk_google_phone_x86 model:Android_SDK_built_for_x86 device:generic_x86
0a388e93      device usb:1-1 product:razor model:Nexus_7 device:flo

ไม่มีโปรแกรมจำลองอยู่ในรายการ

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

  • เซิร์ฟเวอร์ adb ไม่ทำงาน
  • คุณใช้คำสั่ง emulator กับ -port หรือ ตัวเลือก -ports ที่มีค่าพอร์ตเป็นเลขคี่ระหว่าง 5554 ถึง 5584
  • พอร์ตหมายเลขคี่ที่คุณเลือกไม่ไม่ว่าง จึงสามารถเชื่อมต่อพอร์ตได้ที่ หมายเลขพอร์ตที่ระบุ หรือหากพอร์ตไม่ว่าง โปรแกรมจำลองจะเปลี่ยนเป็น อีกพอร์ตหนึ่งที่มีคุณสมบัติตรงตามข้อกำหนดข้อ 2.
  • คุณเริ่มต้นเซิร์ฟเวอร์ adb หลังจากที่เริ่มโปรแกรมจำลอง

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

ตัวอย่างที่ 1: ในลำดับคำสั่งต่อไปนี้ คำสั่ง adb devices จะเริ่มต้น เซิร์ฟเวอร์ adb แต่รายการอุปกรณ์ไม่ปรากฏขึ้น

หยุดเซิร์ฟเวอร์ adb แล้วป้อนคำสั่งต่อไปนี้ตามลำดับที่แสดง สำหรับ AVD โปรดระบุชื่อ AVD ที่ถูกต้องจากระบบของคุณ หากต้องการดูรายการชื่อ AVD ให้พิมพ์ emulator -list-avds คำสั่ง emulator อยู่ใน ไดเรกทอรี android_sdk/tools

$ adb kill-server
$ emulator -avd Nexus_6_API_25 -port 5555
$ adb devices

List of devices attached
* daemon not running. starting it now on port 5037 *
* daemon started successfully *

ตัวอย่างที่ 2: ในลำดับคำสั่งต่อไปนี้ adb devices จะแสดงคำสั่ง รายการอุปกรณ์เนื่องจากเซิร์ฟเวอร์ adb เริ่มทำงานก่อน

หากต้องการดูโปรแกรมจำลองในเอาต์พุต adb devices ให้หยุดเซิร์ฟเวอร์ adb และ จากนั้นเริ่มต้นอีกครั้งหลังจากใช้คำสั่ง emulator และก่อนใช้ adb devices ดังนี้

$ adb kill-server
$ emulator -avd Nexus_6_API_25 -port 5557
$ adb start-server
$ adb devices

List of devices attached
emulator-5557 device

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

ส่งคำสั่งไปยังอุปกรณ์ที่ต้องการ

หากมีอุปกรณ์หลายเครื่อง คุณต้องระบุอุปกรณ์เป้าหมาย เมื่อคุณออกคำสั่ง adb หากต้องการระบุเป้าหมาย ให้ทำตามขั้นตอนต่อไปนี้

  1. ใช้คำสั่ง devices เพื่อดูหมายเลขซีเรียลของเป้าหมาย
  2. เมื่อคุณมีหมายเลขซีเรียลแล้ว ให้ใช้ -s พร้อมคำสั่ง adb เพื่อระบุหมายเลขซีเรียล
    1. หากคุณต้องการออกคำสั่ง adb จำนวนมาก คุณสามารถตั้งค่า ตัวแปรสภาพแวดล้อม $ANDROID_SERIAL ที่จะมีหมายเลขซีเรียล แทน
    2. หากคุณใช้ทั้ง 2 รูปแบบ -s และ $ANDROID_SERIAL ลบล้าง -s $ANDROID_SERIAL

ในตัวอย่างต่อไปนี้ จะได้รับรายการอุปกรณ์ที่แนบ จากนั้นจะอยู่ในรูปแบบซีเรียล หมายเลขของอุปกรณ์ 1 เครื่องที่ใช้ติดตั้ง helloWorld.apk ในอุปกรณ์นั้น

$ adb devices
List of devices attached
emulator-5554 device
emulator-5555 device
0.0.0.0:6520  device

# To install on emulator-5555
$ adb -s emulator-5555 install helloWorld.apk
# To install on 0.0.0.0:6520
$ adb -s 0.0.0.0:6520 install helloWorld.apk

หมายเหตุ: หากคุณออกคำสั่งโดยไม่ระบุอุปกรณ์เป้าหมาย เมื่อมีอุปกรณ์หลายเครื่อง adb จะแสดงข้อผิดพลาด "adb: มากกว่าหนึ่งอุปกรณ์/โปรแกรมจำลอง"

หากคุณมีอุปกรณ์หลายเครื่อง แต่มีเครื่องเดียวที่เป็นโปรแกรมจำลอง ใช้ตัวเลือก -e เพื่อส่งคำสั่งไปยังโปรแกรมจำลอง ถ้ามี แต่มีอุปกรณ์ฮาร์ดแวร์เพียงเครื่องเดียวเชื่อมต่ออยู่ ให้ใช้ตัวเลือก -d เพื่อส่งคำสั่งไปยัง อุปกรณ์ฮาร์ดแวร์

ติดตั้งแอป

คุณใช้ adb เพื่อติดตั้ง APK ในโปรแกรมจำลองหรืออุปกรณ์ที่เชื่อมต่อได้ ด้วยคำสั่ง install:

adb install path_to_apk

คุณต้องใช้ตัวเลือก -t กับ install เมื่อคุณติดตั้ง APK ทดสอบ สำหรับข้อมูลเพิ่มเติม ดู -t

หากต้องการติดตั้ง APK หลายรายการ ให้ใช้ install-multiple วิธีนี้มีประโยชน์หากคุณดาวน์โหลด APK สำหรับอุปกรณ์ที่เฉพาะเจาะจงของแอปจาก Play Console และต้องการติดตั้งใน โปรแกรมจำลองหรืออุปกรณ์จริง

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการสร้างไฟล์ APK ที่คุณสามารถติดตั้งในโปรแกรมจำลอง/อุปกรณ์ได้ โปรดดูสร้างและเรียกใช้แอป

หมายเหตุ: หากคุณใช้ Android Studio คุณไม่จำเป็นต้องใช้ adbโดยตรงเพื่อติดตั้งแอปของคุณในโปรแกรมจำลองหรืออุปกรณ์ แต่จะใช้ Android Studio แทน จะจัดการบรรจุภัณฑ์และการติดตั้งแอปให้คุณ

ตั้งค่าการส่งต่อพอร์ต

ใช้คำสั่ง forward เพื่อตั้งค่าการส่งต่อพอร์ตที่กำหนดเอง ส่งต่อคำขอในพอร์ตของโฮสต์ที่ระบุไปยังพอร์ตอื่นในอุปกรณ์ ตัวอย่างต่อไปนี้ตั้งค่าการส่งต่อพอร์ตของโฮสต์ 6100 ไปยังพอร์ตของอุปกรณ์ 7100

adb forward tcp:6100 tcp:7100

ตัวอย่างต่อไปนี้เป็นการตั้งค่าการส่งต่อของพอร์ตโฮสต์ 6100 ไปยัง local:logd

adb forward tcp:6100 local:logd

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

คัดลอกไฟล์ไปที่และจากอุปกรณ์

ใช้คำสั่ง pull และ push เพื่อคัดลอกไฟล์ไปที่ และจากอุปกรณ์ ซึ่งต่างจากคำสั่ง install ซึ่งคัดลอกไฟล์ APK ไปยังตำแหน่งที่เฉพาะเจาะจงเท่านั้น pull และ push คุณจะคัดลอกไดเรกทอรีและไฟล์ที่กำหนดเองไปยังตำแหน่งใดก็ได้ในอุปกรณ์

หากต้องการคัดลอกไฟล์หรือไดเรกทอรีและไดเรกทอรีย่อยจากอุปกรณ์ ให้ทำดังนี้ ให้ทำดังนี้

adb pull remote local

หากต้องการคัดลอกไฟล์หรือไดเรกทอรีและไดเรกทอรีย่อยไปยังอุปกรณ์ ให้ทำดังนี้ ให้ทำดังนี้

adb push local remote

แทนที่ local และ remote ด้วยเส้นทางไปยัง ไฟล์/ไดเรกทอรีเป้าหมายในเครื่องการพัฒนา (ในเครื่อง) และใน อุปกรณ์ (รีโมต) เช่น

adb push myfile.txt /sdcard/myfile.txt

หยุดเซิร์ฟเวอร์ adb

ในบางกรณี คุณอาจต้องสิ้นสุดกระบวนการของเซิร์ฟเวอร์ adb แล้วจึงรีสตาร์ท เพื่อแก้ไขปัญหา ตัวอย่างเช่น กรณีนี้อาจเกิดขึ้นหาก adb ไม่ตอบสนองต่อคําสั่ง

หากต้องการหยุดเซิร์ฟเวอร์ adb ให้ใช้คำสั่ง adb kill-server จากนั้นคุณจะรีสตาร์ทเซิร์ฟเวอร์ได้โดยออกคำสั่ง adb อื่น

ออกคำสั่ง adb

ออกคำสั่ง adb จากบรรทัดคำสั่งบนเครื่องพัฒนาหรือจากสคริปต์โดยใช้ ดังต่อไปนี้:

adb [-d | -e | -s serial_number] command

หากมีโปรแกรมจำลองที่ทำงานอยู่เพียง 1 รายการ หรือเชื่อมต่ออุปกรณ์อยู่เพียง 1 เครื่อง คำสั่ง adb ส่งไปยังอุปกรณ์นั้นโดยค่าเริ่มต้น หากมีโปรแกรมจำลองหลายตัวทำงานอยู่ และ/หรืออุปกรณ์หลายเครื่องทำงานอยู่ ที่แนบมา คุณต้องใช้ -d, -e หรือ -s เพื่อระบุอุปกรณ์เป้าหมายที่ควรส่งคำสั่ง

ดูรายการคำสั่ง adb ทั้งหมดที่รองรับโดยละเอียดได้โดยใช้คำสั่งต่อไปนี้ คำสั่ง:

adb --help

ออกคำสั่ง Shell

คุณใช้คําสั่ง shell เพื่อออกคําสั่งของอุปกรณ์ผ่าน adb หรือเพื่อเริ่ม Shell แบบอินเทอร์แอกทีฟ หากต้องการออกคำสั่งเดียว ให้ใช้คำสั่ง shell ดังนี้

adb [-d |-e | -s serial_number] shell shell_command

หากต้องการเริ่ม Shell แบบอินเทอร์แอกทีฟในอุปกรณ์ ให้ใช้คำสั่ง shell ดังนี้

adb [-d | -e | -s serial_number] shell

หากต้องการออกจาก Shell แบบอินเทอร์แอกทีฟ ให้กด Control+D หรือพิมพ์ exit

Android มีเครื่องมือบรรทัดคำสั่ง Unix ทั่วไปส่วนใหญ่ สำหรับรายการเครื่องมือที่ใช้ได้ ให้ใช้ คำสั่งต่อไปนี้

adb shell ls /system/bin

มีความช่วยเหลือสำหรับคำสั่งส่วนใหญ่ผ่านอาร์กิวเมนต์ --help คำสั่ง Shell จำนวนมากมาจาก toybox คุณรับความช่วยเหลือทั่วไปเกี่ยวกับคำสั่ง Toybox ทั้งหมดได้ที่ toybox --help

เมื่อใช้เครื่องมือแพลตฟอร์ม Android เวอร์ชัน 23 ขึ้นไป adb จะจัดการอาร์กิวเมนต์ในลักษณะเดียวกับที่ คำสั่ง ssh(1) การเปลี่ยนแปลงนี้ได้แก้ไขปัญหาหลายอย่างเกี่ยวกับ การแทรกคำสั่ง และช่วยให้เรียกใช้คำสั่งที่มี Shell ได้อย่างปลอดภัย อักขระเมตา เช่น adb install Let\'sGo.apk การเปลี่ยนแปลงนี้หมายถึงการตีความ ของคำสั่งที่มีอักขระเมตาเชลล์ก็มีการเปลี่ยนแปลงด้วย

ตัวอย่างเช่น ตอนนี้ adb shell setprop key 'value' เป็นข้อผิดพลาด เนื่องจาก เครื่องหมายคำพูดเดี่ยว (') ถูกกลืนโดย Shell ในเครื่อง และอุปกรณ์จะเห็น adb shell setprop key value หากต้องการให้คำสั่งทำงานได้ ให้พูด 2 ครั้ง สำหรับเชลล์ในเครื่องและอีกครั้งสำหรับ Shell ระยะไกล เช่นเดียวกับที่คุณทำกับ ssh(1) เช่น adb shell setprop key 'value'

โปรดดูเพิ่มเติมที่เครื่องมือบรรทัดคำสั่งของ Logcat ซึ่งจะเป็นประโยชน์ สำหรับการตรวจสอบบันทึกของระบบ

เครื่องมือจัดการกิจกรรมการโทร

ภายใน Shell ของ adb คุณสามารถออกคำสั่งกับเครื่องมือเครื่องมือจัดการกิจกรรม (am) เพื่อ ดำเนินการต่างๆ ของระบบ เช่น เริ่มกิจกรรม บังคับให้หยุดกระบวนการ ประกาศความตั้งใจ ปรับเปลี่ยนคุณสมบัติหน้าจออุปกรณ์ และอื่นๆ

ขณะอยู่ในเชลล์ ไวยากรณ์ am จะเป็น:

am command

นอกจากนี้คุณยังออกคำสั่งเครื่องมือจัดการกิจกรรมจาก adb ได้โดยตรง โดยไม่ต้องป้อน Shell ระยะไกล เช่น

adb shell am start -a android.intent.action.VIEW

ตาราง 1 คำสั่งของเครื่องมือจัดการกิจกรรมที่ใช้ได้

คำสั่ง คำอธิบาย
start [options] intent เริ่มต้น Activity ที่ระบุโดย intent

โปรดดู ข้อกำหนดสำหรับอาร์กิวเมนต์ Intent

โดยมีตัวเลือกดังนี้

  • -D: เปิดใช้การแก้ไขข้อบกพร่อง
  • -W: รอให้การเปิดตัวเสร็จสมบูรณ์
  • --start-profiler file: เริ่มใช้งานเครื่องมือสร้างโปรไฟล์และส่งผลลัพธ์ไปยัง file
  • -P file: เช่น --start-profiler แต่การทำโปรไฟล์จะหยุดลงเมื่อแอปไม่มีการใช้งาน
  • -R count: เปิดกิจกรรมซ้ำ count ครั้ง ก่อนการทำซ้ำแต่ละครั้ง กิจกรรมด้านบนก็จะเสร็จสมบูรณ์แล้ว
  • -S: บังคับให้แอปเป้าหมายหยุดก่อนเริ่มกิจกรรม
  • --opengl-trace: เปิดใช้การติดตามฟังก์ชัน OpenGL
  • --user user_id | current: ระบุผู้ใช้ที่จะเรียกใช้ หากไม่ แล้วเรียกใช้ในฐานะผู้ใช้ปัจจุบัน
startservice [options] intent ขึ้นต้น Service ที่ระบุโดย intent

โปรดดู ข้อกำหนดสำหรับอาร์กิวเมนต์ Intent

โดยมีตัวเลือกดังนี้

  • --user user_id | current: ระบุผู้ใช้ที่จะเรียกใช้ หากไม่ แล้วเรียกใช้ในฐานะผู้ใช้ปัจจุบัน
force-stop package บังคับหยุดทุกอย่างที่เกี่ยวข้องกับ package
kill [options] package ปิดใช้งานกระบวนการทั้งหมดที่เกี่ยวข้องกับ package คำสั่งนี้จะปิดใช้งานเท่านั้น กระบวนการที่ปลอดภัยซึ่งจะไม่ส่งผลกระทบกับผู้ใช้ ประสบการณ์การใช้งาน

โดยมีตัวเลือกดังนี้

  • --user user_id | all | current: ระบุกระบวนการของผู้ใช้ที่จะฆ่า หากไม่ได้ระบุ ให้ฆ่าผู้ใช้ทั้งหมด กระบวนการ
kill-all ยกเลิกกระบวนการเบื้องหลังทั้งหมด
broadcast [options] intent เผยแพร่เจตนาในการออกอากาศ

โปรดดู ข้อกำหนดสำหรับอาร์กิวเมนต์ Intent

โดยมีตัวเลือกดังนี้

  • [--user user_id | all | current]: ระบุผู้ใช้ที่จะส่ง หากไม่ แล้วส่งไปยังผู้ใช้ทั้งหมด
instrument [options] component เริ่มการตรวจสอบด้วย Instrumentation โดยปกติจะเป็น component เป้าหมาย คือแบบฟอร์ม test_package/runner_class

โดยมีตัวเลือกดังนี้

  • -r: พิมพ์ผลลัพธ์ที่เป็นข้อมูลดิบ (มิเช่นนั้นให้ถอดรหัส report_key_streamresult) ใช้กับ [-e perf true] เพื่อสร้างเอาต์พุตดิบสำหรับการวัดประสิทธิภาพ
  • -e name value: ตั้งค่าอาร์กิวเมนต์ name ไปยัง value สำหรับผู้ทดสอบ แบบฟอร์มทั่วไปคือ -e testrunner_flag value[,value...]
  • -p file: เขียนข้อมูลการทำโปรไฟล์ไปยัง file
  • -w: รอให้การวัดเสร็จสิ้นก่อนส่งคืน ต้องระบุสำหรับ เครื่องมือดำเนินการทดสอบ
  • --no-window-animation: ปิดภาพเคลื่อนไหวบนหน้าต่างขณะวิ่ง
  • --user user_id | current: ระบุการใช้เครื่องมือของผู้ใช้ที่จะเรียกใช้ หากไม่ระบุ ให้เรียกใช้ในผู้ใช้ปัจจุบัน
profile start process file เริ่มใช้เครื่องมือสร้างโปรไฟล์ใน process เขียนผลลัพธ์ไปยัง file
profile stop process หยุดเครื่องมือสร้างโปรไฟล์ใน process
dumpheap [options] process file ถ่ายโอนฮีปของ process เขียนไปยัง file

โดยมีตัวเลือกดังนี้

  • --user [user_id | current]: เมื่อป้อนชื่อกระบวนการ ระบุผู้ใช้ของกระบวนการที่จะถ่ายโอน หากไม่ได้ระบุ ระบบจะใช้ผู้ใช้ปัจจุบัน
  • -b [| png | jpg | webp]: ลบบิตแมปจากหน่วยความจำกราฟิก (ไม่บังคับ) ระบุรูปแบบที่จะดัมพ์ (PNG โดยค่าเริ่มต้น)
  • -n: ถ่ายโอนฮีปดั้งเดิมแทนฮีปที่มีการจัดการ
set-debug-app [options] package ตั้งค่าแอป package เพื่อแก้ไขข้อบกพร่อง

โดยมีตัวเลือกดังนี้

  • -w: รอโปรแกรมแก้ไขข้อบกพร่องเมื่อแอปเริ่มทำงาน
  • --persistent: เก็บค่านี้ไว้
clear-debug-app ล้างแพ็กเกจที่ตั้งค่าไว้ก่อนหน้านี้เพื่อแก้ไขข้อบกพร่องด้วย set-debug-app
monitor [options] เริ่มตรวจสอบข้อขัดข้องหรือ ANR

โดยมีตัวเลือกดังนี้

  • --gdb: เริ่ม gdbserv บนพอร์ตที่กำหนดที่การขัดข้อง/ANR
screen-compat {on | off} package ควบคุมหน้าจอ ความเข้ากันได้ของ package
display-size [reset | widthxheight] ลบล้างขนาดการแสดงผลของอุปกรณ์ คำสั่งนี้มีประโยชน์สำหรับการทดสอบแอปบนหน้าจอขนาดต่างๆ โดยการเลียนแบบ ความละเอียดของหน้าจอโดยใช้อุปกรณ์ที่มีหน้าจอขนาดใหญ่ หรือในทางกลับกัน

ตัวอย่าง:
am display-size 1280x800

display-density dpi ลบล้างความหนาแน่นของการแสดงผลของอุปกรณ์ คำสั่งนี้มีประโยชน์สำหรับการทดสอบแอปกับความหนาแน่นของหน้าจอระดับต่างๆ โดยเลียนแบบความหนาแน่นสูง ที่ใช้หน้าจอความหนาแน่นต่ำ หรือหน้าจอความหนาแน่นต่ำ

ตัวอย่าง:
am display-density 480

to-uri intent พิมพ์ข้อกำหนด Intent ที่ระบุเป็น URI

โปรดดู ข้อกำหนดสำหรับอาร์กิวเมนต์ Intent

to-intent-uri intent พิมพ์ข้อกำหนด Intent ที่ระบุเป็น URI intent:

โปรดดู ข้อกำหนดสำหรับอาร์กิวเมนต์ Intent

ข้อกำหนดสำหรับอาร์กิวเมนต์ Intent

สำหรับคำสั่งของเครื่องมือจัดการกิจกรรมที่ใช้อาร์กิวเมนต์ intent คุณจะดำเนินการต่อไปนี้ได้ ให้ระบุ Intent ด้วยตัวเลือกต่อไปนี้

ผู้จัดการแพ็กเกจการโทร (pm)

ใน Shell ของ adb คุณสามารถออกคำสั่งกับเครื่องมือจัดการแพ็กเกจ (pm) เพื่อ ดำเนินการและการค้นหาในแพ็กเกจแอปที่ติดตั้งในอุปกรณ์

ขณะอยู่ในเชลล์ ไวยากรณ์ pm จะเป็น:

pm command

นอกจากนี้คุณยังออกคำสั่งตัวจัดการแพ็กเกจจาก adb ได้โดยตรง โดยไม่ต้องป้อน Shell ระยะไกล เช่น

adb shell pm uninstall com.example.MyApp

ตาราง 2 คำสั่งตัวจัดการแพ็กเกจที่ใช้ได้

คำสั่ง คำอธิบาย
list packages [options] filter พิมพ์แพ็กเกจทั้งหมด (ไม่บังคับ) ผู้ที่มีชื่อแพ็กเกจมีข้อความในภาษา filter

ตัวเลือก:

  • -f: ดูไฟล์ที่เกี่ยวข้อง
  • -d: กรองเพื่อแสดงเฉพาะแพ็กเกจที่ปิดใช้
  • -e: กรองเพื่อแสดงเฉพาะแพ็กเกจที่เปิดใช้
  • -s: กรองเพื่อแสดงเฉพาะแพ็กเกจระบบ
  • -3: กรองเพื่อแสดงเฉพาะแพ็กเกจของบุคคลที่สาม
  • -i: ดูโปรแกรมติดตั้งของแพ็กเกจ
  • -u: รวมแพ็กเกจที่ถอนการติดตั้ง
  • --user user_id: พื้นที่ผู้ใช้ในการค้นหา
list permission-groups พิมพ์กลุ่มสิทธิ์ที่รู้จักทั้งหมด
list permissions [options] group พิมพ์สิทธิ์ที่รู้จักทั้งหมด (ไม่บังคับ) เหล่านั้นใน group

ตัวเลือก:

  • -g: จัดเรียงตามกลุ่ม
  • -f: พิมพ์ข้อมูลทั้งหมด
  • -s: สรุปสั้นๆ
  • -d: แสดงเฉพาะสิทธิ์ที่เป็นอันตราย
  • -u: ระบุเฉพาะสิทธิ์ที่ผู้ใช้จะเห็น
list instrumentation [options] แสดงรายการแพ็กเกจการทดสอบทั้งหมด

ตัวเลือก:

  • -f: แสดงไฟล์ APK สำหรับแพ็กเกจทดสอบ
  • target_package: แสดงรายการแพ็กเกจทดสอบสำหรับแอปนี้เท่านั้น
list features พิมพ์ฟีเจอร์ทั้งหมดของระบบ
list libraries พิมพ์ไลบรารีทั้งหมดที่อุปกรณ์ปัจจุบันรองรับ
list users พิมพ์ผู้ใช้ทั้งหมดในระบบ
path package พิมพ์เส้นทางไปยัง APK ของ package ที่ระบุ
install [options] path ติดตั้งแพ็กเกจที่ระบุโดย path ไปยังระบบ

ตัวเลือก:

  • -r: ติดตั้งแอปที่มีอยู่อีกครั้งโดยเก็บข้อมูลของแอปไว้
  • -t: อนุญาตให้ติดตั้ง APK ทดสอบ Gradle สร้าง APK ทดสอบเมื่อ คุณเคยเรียกใช้หรือแก้ไขข้อบกพร่องของแอปหรือเคยใช้ Android Studio บิลด์ > เท่านั้น รังสรรค์ คำสั่ง APK หาก APK สร้างขึ้นโดยใช้ SDK การแสดงตัวอย่างสำหรับนักพัฒนาซอฟต์แวร์ คุณต้องใส่ ตัวเลือก -t ด้วยคำสั่ง install หากคุณติดตั้ง APK ทดสอบ
  • -i installer_package_name: ระบุชื่อแพ็กเกจของโปรแกรมติดตั้ง
  • --install-location location: ตั้งค่าตำแหน่งการติดตั้ง โดยใช้ค่าใดค่าหนึ่งต่อไปนี้
    • 0: ใช้ตำแหน่งการติดตั้งเริ่มต้น
    • 1: ติดตั้งในที่จัดเก็บข้อมูลภายในอุปกรณ์
    • 2: ติดตั้งในสื่อภายนอก
  • -f: ติดตั้งแพ็กเกจในหน่วยความจำของระบบภายใน
  • -d: อนุญาตให้ดาวน์เกรดรหัสเวอร์ชัน
  • -g: ให้สิทธิ์ทั้งหมดที่ระบุในไฟล์ Manifest ของแอป
  • --fastdeploy: อัปเดตแพ็กเกจที่ติดตั้งอย่างรวดเร็วโดยการอัปเดตเฉพาะส่วนต่างๆ ของ APK ที่มีการเปลี่ยนแปลง
  • --incremental: ติดตั้ง APK มากพอที่จะเปิดแอป ขณะสตรีมข้อมูลที่เหลือในเบื้องหลัง หากต้องการใช้ฟีเจอร์นี้ คุณต้องลงนามใน APK ให้สร้าง ไฟล์ APK Signature Scheme v4 และวางไฟล์นี้ไว้ในไดเรกทอรีเดียวกับ APK ฟีเจอร์นี้รองรับเฉพาะใน อุปกรณ์บางอย่าง ตัวเลือกนี้จะบังคับให้ adb ใช้ฟีเจอร์ หรือจะล้มเหลวหากไม่ใช่ พร้อมข้อมูลรายละเอียดเกี่ยวกับสาเหตุที่ทำให้ล้มเหลว เพิ่มตัวเลือก --wait ต่อท้าย รอจนกว่าจะติดตั้ง APK เสร็จสมบูรณ์ก่อนจึงให้สิทธิ์เข้าถึง APK

    --no-incremental ป้องกันไม่ให้ adb ใช้ฟีเจอร์นี้

uninstall [options] package นำแพ็กเกจออกจากระบบ

ตัวเลือก:

  • -k: เก็บข้อมูลและไดเรกทอรีแคชไว้หลังจากนำแพ็กเกจออก
  • --user user_id: ระบุผู้ใช้ที่นำแพ็กเกจออก
  • --versionCode version_code: ถอนการติดตั้งเฉพาะเมื่อแอปมีรหัสเวอร์ชันตามที่ระบุเท่านั้น
clear package ลบข้อมูลทั้งหมดที่เชื่อมโยงกับแพ็กเกจ
enable package_or_component เปิดใช้แพ็กเกจหรือคอมโพเนนต์ที่กำหนด (เขียนเป็น "package/class")
disable package_or_component ปิดใช้แพ็กเกจหรือคอมโพเนนต์ที่กำหนด (ซึ่งเขียนเป็น "package/class")
disable-user [options] package_or_component

ตัวเลือก:

  • --user user_id: ผู้ใช้ที่จะปิดใช้
grant package_name permission ให้สิทธิ์แก่แอป สำหรับอุปกรณ์ที่ใช้ Android 6.0 (API ระดับ 23) และสูงกว่าสิทธิ์ดังกล่าวอาจเป็นสิทธิ์ที่ประกาศไว้ในไฟล์ Manifest ของแอป ในอุปกรณ์ ที่ใช้งาน Android 5.1 (API ระดับ 22) และต่ำกว่า ต้องเป็นสิทธิ์ที่ไม่บังคับตามที่กำหนดโดย แอป
revoke package_name permission เพิกถอนสิทธิ์จากแอป สำหรับอุปกรณ์ที่ใช้ Android 6.0 (ระดับ API 23) ขึ้นไป สิทธิ์อาจเป็นสิทธิ์ที่ประกาศไว้ในไฟล์ Manifest ของแอป ในอุปกรณ์ ที่ใช้งาน Android 5.1 (API ระดับ 22) และต่ำกว่า ต้องเป็นสิทธิ์ที่ไม่บังคับตามที่กำหนดโดย แอป
set-install-location location เปลี่ยนตำแหน่งการติดตั้งเริ่มต้น ค่าตำแหน่ง:
  • 0: อัตโนมัติ: ให้ระบบเลือกตำแหน่งที่ดีที่สุด
  • 1: ภายใน: ติดตั้งในที่จัดเก็บข้อมูลภายในอุปกรณ์
  • 2: ภายนอก: ติดตั้งในสื่อภายนอก

หมายเหตุ: วิธีนี้ใช้สำหรับการแก้ไขข้อบกพร่องเท่านั้น การใช้สิ่งนี้อาจทำให้ เพื่อทำให้แอปเสียหายและพฤติกรรมที่ไม่พึงประสงค์อื่นๆ

get-install-location แสดงตำแหน่งการติดตั้งปัจจุบัน แสดงผลค่า:
  • 0 [auto]: ให้ระบบเลือกตำแหน่งที่ดีที่สุด
  • 1 [internal]: ติดตั้งในที่จัดเก็บข้อมูลภายในอุปกรณ์
  • 2 [external]: ติดตั้งในสื่อภายนอก
set-permission-enforced permission [true | false] ระบุว่าควรบังคับใช้สิทธิ์ที่กำหนดหรือไม่
trim-caches desired_free_space ตัดไฟล์แคชออกให้ถึงพื้นที่ว่างที่กำหนด
create-user user_name สร้างผู้ใช้ใหม่ด้วย user_name ที่ระบุ พิมพ์ตัวระบุผู้ใช้ใหม่ของผู้ใช้
remove-user user_id นำผู้ใช้ที่มี user_id ที่ระบุออก กำลังลบข้อมูลทั้งหมดที่เกี่ยวข้องกับผู้ใช้รายนั้น
get-max-users พิมพ์จำนวนผู้ใช้สูงสุดที่อุปกรณ์รองรับ
get-app-links [options] [package]

พิมพ์สถานะการยืนยันโดเมนสำหรับ package ที่ระบุ หรือสำหรับทั้งหมด แพ็กเกจ หากไม่ได้ระบุไว้ รหัสรัฐมีคำจำกัดความดังนี้

  • none: ยังไม่มีการบันทึกใดๆ สำหรับโดเมนนี้
  • verified: โดเมนได้รับการยืนยันเรียบร้อยแล้ว
  • approved: อนุมัติโดยบังคับ ซึ่งมักทำผ่าน Shell
  • denied: บังคับให้ปฏิเสธ ซึ่งมักทำผ่าน Shell
  • migrated: เก็บรักษาการยืนยันจากการตอบกลับแบบเดิม
  • restored: เก็บรักษาการยืนยันจากการกู้คืนข้อมูลผู้ใช้ไว้
  • legacy_failure: ถูกปฏิเสธโดยผู้ตรวจสอบเดิมโดยไม่ทราบสาเหตุ
  • system_configured: อนุมัติโดยอัตโนมัติจากการกำหนดค่าอุปกรณ์
  • >= 1024: รหัสข้อผิดพลาดที่กำหนดเอง ซึ่งมีเฉพาะในผู้ตรวจสอบอุปกรณ์

โดยมีตัวเลือกดังนี้

  • --user user_id: รวมตัวเลือกของผู้ใช้ รวมโดเมนทั้งหมด ไม่ใช่แค่การยืนยันอัตโนมัติ
reset-app-links [options] [package]

รีเซ็ตสถานะการยืนยันโดเมนสำหรับแพ็กเกจที่ระบุ หรือสำหรับทั้งหมด แพ็กเกจ หากไม่ได้ระบุไว้

  • package: แพ็กเกจที่จะรีเซ็ต หรือ "ทั้งหมด" เพื่อรีเซ็ตแพ็กเกจทั้งหมด

โดยมีตัวเลือกดังนี้

  • --user user_id: รวมตัวเลือกของผู้ใช้ รวมโดเมนทั้งหมด ไม่ใช่แค่การยืนยันอัตโนมัติ
verify-app-links [--re-verify] [package]

เผยแพร่คำขอยืนยันสำหรับ package ที่ระบุหรือทั้งหมด แพ็กเกจ หากไม่ได้ระบุไว้ ส่งเฉพาะในกรณีที่เคยมีพัสดุมาก่อนเท่านั้น ไม่ได้บันทึกคำตอบ

  • --re-verify: ส่งแม้ว่าแพ็กเกจจะมีการบันทึกคำตอบแล้วก็ตาม
set-app-links [--package package] state domains

ตั้งค่าสถานะของโดเมนสำหรับแพ็กเกจด้วยตนเอง โดเมนต้องเป็น แพ็กเกจที่ประกาศเป็น autoVerify เพื่อให้การทำงานนี้ใช้งานได้ คำสั่งนี้ จะไม่รายงานความล้มเหลวสำหรับโดเมนที่ใช้ไม่ได้

  • --package package: แพ็กเกจที่ต้องการตั้งค่า หรือ "ทั้งหมด" เพื่อตั้งค่าแพ็กเกจทั้งหมด
  • state: รหัสที่จะใช้ตั้งโดเมน ค่าที่ใช้ได้มีดังนี้
    • STATE_NO_RESPONSE (0): รีเซ็ตเสมือนว่าไม่มีการบันทึกคำตอบเลย
    • STATE_SUCCESS (1): ถือว่าโดเมนได้รับการยืนยันโดยโดเมนเรียบร้อยแล้ว ตัวแทนการยืนยัน โปรดทราบว่าตัวแทนยืนยันโดเมนสามารถ ลบล้างสิ่งนี้
    • STATE_APPROVED (2): ถือว่าโดเมนได้รับการอนุมัติเสมอ เพื่อป้องกันไม่ให้ ตัวแทนการยืนยันโดเมนไม่ให้เปลี่ยนแปลง
    • STATE_DENIED (3): ปฏิบัติต่อโดเมนเหมือนถูกปฏิเสธเสมอ เพื่อป้องกันไม่ให้โดเมน ไม่ให้เปลี่ยนตัวแทน
  • domains: รายการโดเมนที่จะเปลี่ยนแปลงหรือ "ทั้งหมด" โดยคั่นด้วยช่องว่าง ถึง เปลี่ยนทุกโดเมน
set-app-links-user-selection --user user_id [--package package] enabled domains

ตั้งค่าสถานะการเลือกผู้ใช้โฮสต์สำหรับแพ็กเกจด้วยตนเอง โดเมน ต้องได้รับการประกาศโดยแพ็กเกจเพื่อให้ใช้งานได้ คำสั่งนี้จะไม่ รายงานความล้มเหลวสำหรับโดเมนที่ใช้ไม่ได้

  • --user user_id: ผู้ใช้ที่จะเปลี่ยนตัวเลือก
  • --package package: แพ็กเกจที่จะต้องตั้งค่า
  • enabled: ต้องการอนุมัติโดเมนหรือไม่
  • domains: รายการโดเมนที่จะเปลี่ยนแปลงหรือ "ทั้งหมด" โดยคั่นด้วยช่องว่าง ถึง เปลี่ยนทุกโดเมน
set-app-links-user-selection --user user_id [--package package] enabled domains

ตั้งค่าสถานะการเลือกผู้ใช้โฮสต์สำหรับแพ็กเกจด้วยตนเอง โดเมน ต้องได้รับการประกาศโดยแพ็กเกจเพื่อให้ใช้งานได้ คำสั่งนี้จะไม่ รายงานความล้มเหลวสำหรับโดเมนที่ใช้ไม่ได้

  • --user user_id: ผู้ใช้ที่จะเปลี่ยนตัวเลือก
  • --package package: แพ็กเกจที่จะต้องตั้งค่า
  • enabled: ต้องการอนุมัติโดเมนหรือไม่
  • domains: รายการโดเมนที่จะเปลี่ยนแปลงหรือ "ทั้งหมด" โดยคั่นด้วยช่องว่าง ถึง เปลี่ยนทุกโดเมน
set-app-links-allowed --user user_id [--package package] allowed

สลับการตั้งค่าการจัดการลิงก์ที่ได้รับการยืนยันอัตโนมัติสำหรับแพ็กเกจ

  • --user user_id: ผู้ใช้ที่จะเปลี่ยนตัวเลือก
  • --package package: แพ็กเกจที่ต้องการตั้งค่า หรือ "ทั้งหมด" เพื่อตั้งค่าทั้งหมด พัสดุ แพ็กเกจจะรีเซ็ตหากไม่ได้ระบุแพ็กเกจ
  • allowed: true เพื่ออนุญาตให้แพ็กเกจเปิดลิงก์ที่ยืนยันโดยอัตโนมัติ "เท็จ" เพื่อปิดใช้
get-app-link-owners --user user_id [--package package] domains

พิมพ์เจ้าของโดเมนที่เจาะจงสำหรับผู้ใช้ที่กำหนดตามลำดับลำดับความสำคัญต่ำไปสูง

  • --user user_id: ผู้ใช้ที่ต้องการค้นหา
  • --package package: สามารถเลือกพิมพ์สำหรับโดเมนเว็บทั้งหมดได้ด้วย ประกาศโดยแพ็กเกจ หรือ "all" เพื่อพิมพ์แพ็กเกจทั้งหมด
  • domains: รายการโดเมนในการค้นหาที่คั่นด้วยช่องว่าง

โทรหาตัวจัดการนโยบายด้านอุปกรณ์ (dpm)

เพื่อช่วยในการพัฒนาและทดสอบแอปการจัดการอุปกรณ์ ไปยังเครื่องมือตัวจัดการนโยบายด้านอุปกรณ์ (dpm) ใช้เครื่องมือเพื่อควบคุม แอปผู้ดูแลระบบหรือเปลี่ยนข้อมูลสถานะของนโยบายในอุปกรณ์

ในตัวอย่าง ไวยากรณ์ dpmจะเป็นดังนี้

dpm command

นอกจากนี้คุณยังออกคำสั่งตัวจัดการนโยบายด้านอุปกรณ์ได้โดยตรงจาก adb โดยไม่ต้องป้อน Shell ระยะไกล:

adb shell dpm command

ตารางที่ 3 คำสั่งของตัวจัดการนโยบายด้านอุปกรณ์ที่ใช้ได้

คำสั่ง คำอธิบาย
set-active-admin [options] component ตั้ง component เป็นผู้ดูแลระบบที่ใช้งานอยู่

โดยมีตัวเลือกดังนี้

  • --user user_id: ระบุผู้ใช้เป้าหมาย นอกจากนี้คุณยังสามารถ --user current เพื่อเลือกผู้ใช้ปัจจุบัน
set-profile-owner [options] component ตั้ง component เป็นผู้ดูแลระบบที่ใช้งานอยู่และแพ็กเกจเป็นเจ้าของโปรไฟล์สำหรับผู้ใช้ที่มีอยู่

โดยมีตัวเลือกดังนี้

  • --user user_id: ระบุผู้ใช้เป้าหมาย คุณสามารถ ส่ง --user current เพื่อเลือกผู้ใช้ปัจจุบันด้วย
  • --name name: ระบุชื่อองค์กรที่มนุษย์อ่านได้
set-device-owner [options] component ตั้ง component เป็นผู้ดูแลระบบที่ใช้งานอยู่และแพ็กเกจเป็นเจ้าของอุปกรณ์

โดยมีตัวเลือกดังนี้

  • --user user_id: ระบุผู้ใช้เป้าหมาย นอกจากนี้คุณยังสามารถ --user current เพื่อเลือกผู้ใช้ปัจจุบัน
  • --name name: ระบุชื่อองค์กรที่มนุษย์อ่านได้
remove-active-admin [options] component ปิดใช้ผู้ดูแลระบบที่ใช้งานอยู่ แอปต้องประกาศ android:testOnly ในไฟล์ Manifest คำสั่งนี้จะนำเจ้าของอุปกรณ์และโปรไฟล์ออกด้วย

โดยมีตัวเลือกดังนี้

  • --user user_id: ระบุผู้ใช้เป้าหมาย นอกจากนี้คุณยังสามารถ --user current เพื่อเลือกผู้ใช้ปัจจุบัน
clear-freeze-period-record ล้างบันทึกของอุปกรณ์เกี่ยวกับช่วงหยุดทำงานที่กำหนดไว้ก่อนหน้านี้สำหรับการอัปเดต OTA ของระบบ มีประโยชน์ เพื่อหลีกเลี่ยงข้อจำกัดในการตั้งเวลาอุปกรณ์เมื่อพัฒนาแอปที่จัดการช่วงหยุดทำงาน โปรดดู จัดการการอัปเดตระบบ

รองรับในอุปกรณ์ที่ใช้ Android 9.0 (API ระดับ 28) ขึ้นไป

force-network-logs บังคับให้ระบบสร้างบันทึกเครือข่ายที่มีอยู่ให้พร้อมสำหรับการดึงข้อมูลโดย DPC หากมี หรือบันทึก DNS ที่มีอยู่ DPC จะได้รับ onNetworkLogsAvailable() Callback ดูการบันทึกกิจกรรมของเครือข่าย

คำสั่งนี้มีการจำกัดอัตรา รองรับในอุปกรณ์ที่ใช้ Android 9.0 (API ระดับ 28) ขึ้นไป

force-security-logs บังคับให้ระบบสร้างบันทึกความปลอดภัยที่มีอยู่สำหรับ DPC หากมีบันทึก DPC จะได้รับ onSecurityLogsAvailable() Callback โปรดดูที่บันทึกอุปกรณ์ขององค์กร กิจกรรม

คำสั่งนี้มีการจำกัดอัตรา รองรับในอุปกรณ์ที่ใช้ Android 9.0 (API ระดับ 28) ขึ้นไป

ถ่ายภาพหน้าจอ

คำสั่ง screencap เป็นยูทิลิตี Shell สำหรับถ่ายภาพหน้าจอของอุปกรณ์ จอแสดงผล

ขณะอยู่ในเชลล์ ไวยากรณ์ screencap จะเป็น:

screencap filename

หากต้องการใช้ screencap จากบรรทัดคำสั่ง ให้ป้อนข้อมูลต่อไปนี้ วันที่

adb shell screencap /sdcard/screen.png

ต่อไปนี้คือตัวอย่างเซสชันภาพหน้าจอที่ใช้ Shell adb เพื่อจับภาพหน้าจอ และคำสั่ง pull เพื่อดาวน์โหลดไฟล์จากอุปกรณ์

$ adb shell
shell@ $ screencap /sdcard/screen.png
shell@ $ exit
$ adb pull /sdcard/screen.png

บันทึกวิดีโอ

คำสั่ง screenrecord เป็นยูทิลิตี Shell สำหรับบันทึกการแสดงผลของอุปกรณ์ ที่ใช้ Android 4.4 (API ระดับ 19) ขึ้นไป ยูทิลิตีจะบันทึกกิจกรรมบนหน้าจอไปยัง MPEG-4 คุณใช้ไฟล์นี้เพื่อสร้างวิดีโอโปรโมตหรือฝึกอบรม รวมถึงแก้ไขข้อบกพร่องและทดสอบได้

ใน Shell ให้ใช้ไวยากรณ์ต่อไปนี้

screenrecord [options] filename

หากต้องการใช้ screenrecord จากบรรทัดคำสั่ง ให้ป้อนข้อมูลต่อไปนี้ วันที่

adb shell screenrecord /sdcard/demo.mp4

หยุดบันทึกหน้าจอโดยกด Control+C มิเช่นนั้น ไฟล์บันทึก หยุดโดยอัตโนมัติที่เวลา 3 นาที หรือตามเวลาที่กำหนดโดย --time-limit

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

$ adb shell
shell@ $ screenrecord --verbose /sdcard/demo.mp4
(press Control + C to stop)
shell@ $ exit
$ adb pull /sdcard/demo.mp4

ยูทิลิตี screenrecord จะบันทึกที่ความละเอียดและอัตราบิตที่รองรับใดก็ได้ ขณะที่รักษาอัตราส่วนของการแสดงผลของอุปกรณ์ไว้ ระเบียนยูทิลิตีที่เนทีฟ ความละเอียดและการวางแนวในการแสดงผลโดยค่าเริ่มต้น โดยมีความยาวสูงสุดได้ 3 นาที

ข้อจำกัดของยูทิลิตี screenrecord:

  • ระบบจะไม่บันทึกเสียงกับไฟล์วิดีโอ
  • การบันทึกวิดีโอไม่พร้อมใช้งานสำหรับอุปกรณ์ที่ใช้ Wear OS
  • อุปกรณ์บางรุ่นอาจบันทึกที่ความละเอียดของจอแสดงผลในเครื่องไม่ได้ หากพบปัญหาเกี่ยวกับการบันทึกหน้าจอ ให้ลองใช้ความละเอียดหน้าจอที่ต่ำลง
  • ไม่รองรับการหมุนหน้าจอระหว่างการบันทึก หากหน้าจอหมุนในระหว่าง หน้าจอบางส่วนจะถูกตัดออกขณะบันทึก

ตาราง 4 screenrecord ตัวเลือก

ตัวเลือก คำอธิบาย
--help แสดงไวยากรณ์คำสั่งและตัวเลือก
--size widthxheight กำหนดขนาดวิดีโอ: 1280x720 ค่าเริ่มต้นคือเนทีฟของอุปกรณ์ ความละเอียดในการแสดงผล (หากรองรับ) เป็น 1280x720 หากไม่มี โปรดใช้ขนาดที่รองรับเพื่อให้ได้ผลลัพธ์ที่ดีที่สุด โดยโปรแกรมเปลี่ยนไฟล์ Advanced Video Coding (AVC) ของอุปกรณ์
--bit-rate rate กำหนดอัตราบิตของวิดีโอเป็นเมกะบิตต่อวินาที ค่าเริ่มต้นคือ 20 Mbps คุณสามารถเพิ่มอัตราบิตเพื่อปรับปรุงคุณภาพวิดีโอ แต่การทำเช่นนี้จะทำให้ภาพยนตร์มีขนาดใหญ่ขึ้น ตัวอย่างต่อไปนี้ตั้งค่าอัตราบิตการบันทึกเป็น 6 Mbps
screenrecord --bit-rate 6000000 /sdcard/demo.mp4
--time-limit time กำหนดเวลาบันทึกสูงสุดเป็นวินาที ค่าเริ่มต้นและค่าสูงสุดคือ 180 (3 นาที)
--rotate หมุนเอาต์พุต 90 องศา ฟีเจอร์นี้อยู่ในขั้นทดลอง
--verbose แสดงข้อมูลบันทึกในหน้าจอบรรทัดคำสั่ง หากไม่ได้เลือกตัวเลือกนี้ ยูทิลิตีจะไม่แสดงข้อมูลใดๆ ขณะเรียกใช้

อ่านโปรไฟล์ ART สำหรับแอป

เริ่มตั้งแต่ Android 7.0 (API ระดับ 24) Android Runtime (ART) จะรวบรวมโปรไฟล์การดำเนินการสำหรับ แอปที่ติดตั้งแล้ว ซึ่งใช้เพื่อเพิ่มประสิทธิภาพการทำงานของแอป ตรวจสอบโปรไฟล์ที่รวบรวมไว้เพื่อทำสิ่งต่อไปนี้ ทำความเข้าใจว่าวิธีใดมีการใช้งานบ่อยและคลาสใดที่ใช้ในระหว่างการเริ่มต้นแอป

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

หากต้องการสร้างรูปแบบข้อความของข้อมูลโปรไฟล์ ให้ใช้คำสั่งต่อไปนี้

adb shell cmd package dump-profiles package

หากต้องการเรียกดูไฟล์ที่สร้าง ให้ใช้รูปแบบต่อไปนี้

adb pull /data/misc/profman/package.prof.txt

รีเซ็ตอุปกรณ์ทดสอบ

หากคุณทดสอบแอปผ่านอุปกรณ์ทดสอบหลายเครื่อง การรีเซ็ตอุปกรณ์ในช่วง เช่น นำข้อมูลผู้ใช้ออกและรีเซ็ตสภาพแวดล้อมการทดสอบ คุณสามารถดำเนินการจากโรงงานได้ การรีเซ็ตอุปกรณ์ทดสอบที่ใช้ Android 10 (API ระดับ 29) ขึ้นไปโดยใช้ คำสั่ง Shell testharness adb ตามที่แสดง:

adb shell cmd testharness enable

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

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

  • อุปกรณ์จะตั้งค่าระบบบางอย่างเพื่อไม่ให้วิซาร์ดการตั้งค่าอุปกรณ์เริ่มต้นปรากฏขึ้น กล่าวคือ อุปกรณ์จะเข้าสู่สถานะที่คุณสามารถติดตั้ง แก้ไขข้อบกพร่อง และทดสอบแอปได้อย่างรวดเร็ว
  • การตั้งค่า
    • ปิดใช้หน้าจอล็อก
    • ปิดใช้การแจ้งเตือนเหตุฉุกเฉิน
    • ปิดการซิงค์อัตโนมัติสำหรับบัญชี
    • ปิดใช้งานการอัปเดตระบบอัตโนมัติ
  • อื่นๆ:
    • ปิดใช้แอปความปลอดภัยที่ติดตั้งไว้ล่วงหน้า

หากแอปต้องตรวจหาและปรับให้เข้ากับการตั้งค่าเริ่มต้นของ testharness ให้ใช้ ActivityManager.isRunningInUserTestHarness()

SQL Lite

sqlite3 เริ่มต้นโปรแกรมบรรทัดคำสั่ง sqlite สำหรับตรวจสอบฐานข้อมูล SQLite ซึ่งมีคำสั่งต่างๆ เช่น .dump เพื่อพิมพ์เนื้อหาของตารางและ .schema เพื่อพิมพ์ใบแจ้งยอด SQL CREATE สำหรับตารางที่มีอยู่ นอกจากนี้คุณยังเรียกใช้คำสั่ง SQLite จากบรรทัดคำสั่งได้ ดังที่ปรากฏดังนี้

$ adb -s emulator-5554 shell
$ sqlite3 /data/data/com.example.app/databases/rssitems.db
SQLite version 3.3.12
Enter ".help" for instructions

หมายเหตุ: คุณจะเข้าถึงฐานข้อมูล SQLite ได้เท่านั้น หากคุณมีสิทธิ์เข้าถึงระดับรากไปยังระบบไฟล์ เช่น ในโปรแกรมจำลอง

ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของบรรทัดคำสั่ง sqlite3

แบ็กเอนด์ USB ของ adb

เซิร์ฟเวอร์ adb สามารถโต้ตอบกับสแต็ก USB ผ่านแบ็กเอนด์ 2 แบบ อาจใช้โฆษณาเนทีฟ ของระบบปฏิบัติการ (Windows, Linux หรือ macOS) หรือใช้แบ็กเอนด์ libusb ได้ ฟีเจอร์บางอย่าง เช่น attach, detach และการตรวจจับความเร็ว USB มีการ ใช้ได้เฉพาะเมื่อใช้แบ็กเอนด์ libusb

คุณเลือกแบ็กเอนด์ได้โดยใช้ตัวแปรสภาพแวดล้อม ADB_LIBUSB หากไม่ได้ตั้งค่าไว้ adb จะใช้แบ็กเอนด์เริ่มต้น ลักษณะการทำงานเริ่มต้นจะแตกต่างกันไปในแต่ละระบบปฏิบัติการ เริ่มต้น ร่วมกับ ADB v34, ระบบจะใช้แบ็กเอนด์ liubusb เป็นค่าเริ่มต้นบนระบบปฏิบัติการทั้งหมดยกเว้น Windows ซึ่งแบ็กเอนด์เนทีฟคือ ใช้โดยค่าเริ่มต้น หาก ADB_LIBUSB คือ ก็จะกำหนดว่าจะใช้แบ็กเอนด์เนทีฟหรือ libusb โปรดดู หน้าที่กำหนดเอง adb เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับตัวแปรสภาพแวดล้อม adb

แบ็กเอนด์ adb mDNS

ADB สามารถใช้โปรโตคอล DNS แบบมัลติแคสต์เพื่อเชื่อมต่อเซิร์ฟเวอร์และอุปกรณ์ได้โดยอัตโนมัติ เซิร์ฟเวอร์ ADB มาพร้อมกับแบ็กเอนด์ 2 ตัว ได้แก่ Bonjour (mdnsResponder ของ Apple) และ Openscreen

แบ็กเอนด์ Bonjour จำเป็นต้องมี Daemon ที่ทำงานในเครื่องโฮสต์ Daemon ในตัวของ Apple ใน macOS จะทำงานอยู่เสมอ แต่ใน Windows และ Linux ผู้ใช้ต้องตรวจสอบว่า Daemon mdnsd พร้อมใช้งานอยู่ หากคำสั่ง adb mdns check แสดงผลข้อผิดพลาด เป็นไปได้ว่า ADB กำลังใช้แบ็กเอนด์ Bonjour แต่ไม่มี Bonjour Daemon ที่กำลังทำงาน

แบ็กเอนด์ Openscreen ไม่จำเป็นต้องเรียกใช้ Daemon ในเครื่อง การรองรับแบ็กเอนด์ Openscreen ใน macOS จะเริ่มต้นที่ ADB v35 รองรับ Windows และ Linux ตั้งแต่ ADB v34

โดยค่าเริ่มต้น ADB จะใช้แบ็กเอนด์ Bonjour คุณเปลี่ยนลักษณะการทำงานนี้ได้โดยใช้ตัวแปรสภาพแวดล้อม ADB_MDNS_OPENSCREEN (ตั้งค่าเป็น 1 หรือ 0) ดูรายละเอียดเพิ่มเติมในหน้าที่กำหนดเองสำหรับ ADB